【问题标题】: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 世界中为什么不存在这种情况的原因是什么(如果有一些设计原则来说明为什么会这样)

【问题讨论】:

    标签: go design-patterns operators


    【解决方案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?

    【讨论】:

      猜你喜欢
      • 2015-02-15
      • 2016-06-24
      • 2015-12-23
      • 2020-08-21
      • 2013-01-15
      • 2021-12-19
      • 2021-06-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多