小编典典

C的三元运算符的惯用Go等效项是什么?

go

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

int index = val > 0 ? val : -val

Go没有条件运算符。实现与上述相同代码的最惯用方式是什么?我来到以下解决方案,但似乎很冗长

var index int

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

有更好的东西吗?


阅读 363

收藏
2020-07-02

共1个答案

小编典典

正如指出的那样(并希望毫不奇怪),使用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)

编译器将内联这样的简单函数,因此它更快,更清晰,更短。

2020-07-02