在 C/C++(以及该系列的许多语言)中,根据条件声明和初始化变量的常用习惯用法使用三元条件运算符:
int index = val > 0 ? val : -val
Go 没有条件运算符。实现与上述相同的代码的最惯用方式是什么?我来到以下解决方案,但它似乎很冗长
var index int if val > 0 { index = val } else { index = -val }
有更好的吗?
正如所指出的(希望不出所料),使用if+else确实是在 Go 中执行条件的惯用方式。
if+else
但是,除了完整var+if+else的代码块之外,这种拼写也经常使用:
var+if+else
index := val if val <= 0 { index = -val }
如果您有一段足够重复的代码,例如 的等价物int value = a <= b ? a : b,您可以创建一个函数来保存它:
int value = a <= b ? a : b
func min(a, b int) int { if a <= b { return a } return b } ... value := min(a, b)
编译器会内联这些简单的函数,因此它更快、更清晰、更短。