为啥 Go 没有三元条件运算符 [关闭]
Posted
技术标签:
【中文标题】为啥 Go 没有三元条件运算符 [关闭]【英文标题】:Why Go doesn't have a ternary conditional operator [closed]为什么 Go 没有三元条件运算符 [关闭] 【发布时间】:2020-06-19 01:15:23 【问题描述】:我对 Go 比较陌生,为了快速赶上,我尝试在 Go 中重写我的一些 javascript(NodeJS) 代码。最近我遇到了一个绊脚石,我发现 Go 没有三元运算符。例如在 JavaScript 中我可以这样做:
const pageNumber: number = query.pageNumber ? parseInt(query.pageNumber, 10): 1;
这里的query代表Req.query
但我发现我不能用 Go 做同样的事情,我不得不写一个 if-else 语句。我只是想知道在 Go 世界中为什么不存在这种情况的原因是什么(如果有一些设计原则来说明为什么会这样)
【问题讨论】:
【参考方案1】:Go FAQ: Why does Go not have the ?:
operator?
Go 中没有三元测试操作。您可以使用以下方法来获得相同的结果:
if expr n = trueVal else n = falseVal
Go 中没有
?:
的原因是该语言的设计者已经看到该操作过于频繁地用于创建难以理解的复杂表达式。if-else
表格虽然更长,但无疑更清晰。一种语言只需要一个条件控制流构造。
查看相关:What is the idiomatic Go equivalent of C's ternary operator?
【讨论】:
以上是关于为啥 Go 没有三元条件运算符 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
当 lhs 为假时,为啥在逻辑 AND 中评估条件(三元)运算符