在C / C ++(以及该家族的许多语言)中,根据条件声明和初始化变量的常用习语使用三元条件运算符:
int index = val > 0 ? val : -val
Go没有条件运算符。实现与上述相同代码的最惯用方式是什么?我来到以下解决方案,但似乎很冗长
var index int
if val > 0 {
index = val
} else {
index = -val
}
有更好的东西吗?
正如指出的那样(并希望毫不奇怪),使用if+else
确实是Go
语言中进行条件处理的惯用方式。
但是,除了完整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)
编译器将内联这样的简单函数,因此它更快,更清晰,更短。