golang中有类似其他语言的三目运算符的东西没?

比如在c里面
int a = x > 0 ? 1 : 2
golang里只能这样?
var a int
if x > 0 {
a = 1
} else {
a = 2
}

共 8 个回复


jimmykuu

没有,这样不符合Golang“一种事情有且只有一种方法完成”的思想。

这种代码我一般这么写:

var a int = 2
if x > 0 {
    a = 1
}
# 0

qq19116699

func If(b bool, t, f interface{}) interface{} {
if b {
    return t
}
return f

}

# 1

ije

三目运算符看上去很酷,但不够优雅。。

# 2

David

话说 Go 里面违反“一种事情有且只有一种方法完成”的地方还是蛮多的,呵呵

# 3

stevewang

实用不教条。所以并不是完全““一种事情有且只有一种方法完成”。

# 4

agrozyme

這些方式都必須先把 True 跟 False 對應的值先計算出來,會影響一些效能~ 比較好的方式還是乖乖寫

var a int
if x > 0 {
a = 1
} else {
a = 2
}
# 6

ljch1209

把代码写在一行就成三目运算符了,哈哈
var a int
if x > 0 { a = 1 } else { a = 2 }

# 7