为什么 Go 没有三元条件运算符

ima*_*adu -1 design-patterns operators go

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

const pageNumber: number = query.pageNumber ? parseInt(query.pageNumber, 10): 1;
Run Code Online (Sandbox Code Playgroud)

此处的查询代表 Req.query

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

icz*_*cza 7

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

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

if expr {
    n = trueVal
} else {
    n = falseVal
}
Run Code Online (Sandbox Code Playgroud)

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

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