Golang 中国

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

8 回复
jimmykuu
#1 jimmykuu • 2013-07-31 11:47

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

这种代码我一般这么写:

var a int = 2
if x > 0 {
    a = 1
}
qq19116699
#2 qq19116699 • 2014-12-29 00:59
func If(b bool, t, f interface{}) interface{} {
if b {
    return t
}
return f

}

ije
#3 ije • 2014-12-29 01:53

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

David
#4 David • 2014-12-30 03:44

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

stevewang
#5 stevewang • 2014-12-30 11:38

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

newmin
#6 newmin • 2014-12-30 14:38

没有啊,可以用#3楼的方法,

func BoolString(b bool,s,s1 string)string{ if b{return s} return s1 }

http://www.github.com/newmin/go2o

agrozyme
#7 agrozyme • 2014-12-30 20:00

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

var a int
if x > 0 {
a = 1
} else {
a = 2
}
ljch1209
#8 ljch1209 • 2018-11-11 18:31

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

需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。