首页 > 解决方案 > 为什么 Go 没有三元条件运算符

问题描述

我对 Go 比较陌生,为了快速赶上,我尝试在 Go 中重写我的一些 JavaScript(NodeJS) 代码。最近我遇到了一个绊脚石,我发现 Go 没有三元运算符。例如在 JavaScript 中我可以这样做:

const pageNumber: number = query.pageNumber ? parseInt(query.pageNumber, 10): 1;

这里的query代表Req.query

但是我发现我不能用 Go 做同样的事情,我必须写一个 if-else 语句。我只是想知道为什么这在 Go 世界中不存在的原因是什么(如果有一些设计原则来说明为什么会这样)

标签: godesign-patternsoperators

解决方案


Go 常见问题解答:为什么 Go 没有?:运算符?

Go 中没有三元测试操作。您可以使用以下方法来实现相同的结果:

if expr {
    n = trueVal
} else {
    n = falseVal
}

Go 没有出现的原因?:是该语言的设计者已经看到该操作过于频繁地用于创建难以理解的复杂表达式。表格虽然更长,if-else但无疑更清晰。一种语言只需要一个条件控制流结构。

请参阅相关:什么是 C 的三元运算符的惯用 Go 等价物?


推荐阅读