什么是C的三值算子的惯用Go?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (17)

在C/C++(以及该家族的许多语言)中,根据条件声明和初始化变量的通用成语使用三元条件运算符:

int index = val > 0 ? val : -val

Go没有条件运算符。实现上述同一段代码的最惯用的方法是什么?我提出了以下解决方案,但似乎相当冗长。

var index int

if val > 0 {
    index = val
} else {
    index = -val
}

还有什么更好的吗?

提问于
用户回答回答于

除了完全的var+if+else但是,这种拼写也经常使用:

index := val
if val <= 0 {
    index = -val
}

如果您有一个足够重复的代码块,例如等效的int value = a <= b ? a : b,您可以创建一个函数来保存它:

func min(a, b int) int {
    if a <= b {
        return a
    }
    return b
}

...

value := min(a, b)
用户回答回答于

No Go没有三元操作符,使用if/etc语法惯用的方式如下:

https://cloud.tencent.com/developer/ask/72308

扫码关注云+社区