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 平整,各分支對齊、一眼看得出是同一組互斥判斷。