熟悉其他程式語言的朋友大概對三元運算子(?:)不陌生,所謂的三元運算子就是判斷一個條件式,根據條件式判斷結果為true or false,決定賦值為A 或B,程式寫起來像是 variable = condition ? A : B,由condition的結果決定variable的值是A 或是 B;當然,我們也可以不用這麼炫的方式來達成上述的目的,例如寫if else來達成,但寫程式的人總是喜歡寫越少越好,這種類似語法糖的功能更是我們的最愛,但目前Golang不打算提供三元運算子,因此我們用寫一個簡單的通用函數來達成。
程式Demo如下,其中func main中展示了使用的方式。
package main import "fmt" func main(){ x := 3 variable := AorB( x > 2, x, 0).(int) fmt.Println(variable) } func AorB(condition bool, a, b interface{}) interface{} { if condition { return a } return b }
至於為什麼Golang不提供三元運算子呢? 這是因為Golang作者任何三元運算子讓一些程式讀起來更複雜,為了讓程式可讀性提高,寧願開發者多寫一點點,其實也是一種clean go code的體現了。