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])

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。