GoLang無法使用三元運算子這問題算是眾所週知,而官方其實似乎也沒打算弄出來 XD。 所以類似這種code在go裡面是無解 :
bValue := false
fmt.Printf("%s", bValue ? "It's Real" : "It's Fake!")
就只好被逼迫很醜的把code寫成這樣:
bValue := false
output := ""
if bValue {
output = "It's Real"
} else {
output = "It's Fake!"
}
fmt.Printf("%s", output)
剛好有人跑來問我這問題,我就提供一下我的解法,雖然醜,但是work
bValue := false
fmt.Printf("%s", func() string {
if bValue {
return "It's Real"
}
return "It's Fake!"
}()) //記得不要漏掉最後一組()
再醜應該也醜不過上面啦,所以我想喜歡的話就把這個先當個workaround吧…最後,再提供一個更簡單,但是可讀性有點不好的解法給大家參考一下,原理其實不難,就留給大家自己參悟一下了喔
bValue := false
fmt.Printf("%s", map[bool]string{true: "It's Real", false: "It's Fake!"}[bValue])