Go 的 switch 預設不 fallthrough

Go 把 C 的預設值反過來:每個 case 跑完自動跳出,不用寫 break;真的要往下貫穿才寫 fallthrough。忘記 break 導致的意外貫穿在 Go 不存在。

switch i {
case 1:
    fmt.Println("1")
case 2, 3:            // 一個 case 可以列多個值
    fmt.Println("2 or 3")
case 4:
    fallthrough       // 明寫才會掉到下一個 case
case 5:
    fmt.Println("5")
}

省略判斷式:switch 當 if-else-if 用

switch 後面不接東西時,等於 switch true,每個 case 寫布林條件:

switch {
case i > 5:
    fmt.Println(i, "> 5")
case i < 5:
    fmt.Println(i, "< 5")
case i == 5:
    fmt.Println(i, "= 5")
}

比一長串 if-else-if 平整,各分支對齊、一眼看得出是同一組互斥判斷。

相關:Go 的 if 可以先宣告變數且作用域涵蓋 else