switchはif文と同じく、条件分岐して実行する文です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
package main import ( "fmt" ) func main() { i := 10 //if文でこう書けるものが if i == 1 { fmt.Println("1です") } else if i == 2 { fmt.Println("2です") } else { fmt.Println("それ以外です") } //switch文ではこう書ける switch i { case 1: fmt.Println("1です") case 2: fmt.Println("2です") default: fmt.Println("それ以外です") } //もしも変数iと違う型を指定するとエラー switch i { case 1: fmt.Println("1です") case 2: fmt.Println("2です") //文字列なのでエラー //case "3": // fmt.Println("3です") //bool型なのでエラー //case i == 10: // fmt.Println("10です") default: fmt.Println("それ以外です") } } |
caseには複数の値を指定できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
package main import ( "fmt" ) func main() { i := 10 //if文でこう書くと面倒ですが if i == 1 || i == 3 || i == 5 || i == 9 { fmt.Println("奇数です") } else if i == 2 || i == 4 || i == 6 || i == 8 || i == 10 { fmt.Println("偶数です") } else { fmt.Println("10より大きいです") } //switch文ならcaseに複数の値を書けるので便利 switch i { case 1, 3, 5, 7, 9: fmt.Println("奇数です") case 2, 4, 6, 8, 10: fmt.Println("偶数です") default: fmt.Println("10より大きいです") } } |
条件のないswitchはif-elseと同等です。
fallthroughを書くと次のcaseも実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
package main import ( "fmt" ) func main() { i := 19 switch { case i >= 20: fmt.Println("アルコールが飲めます") fallthrough case i >= 18: fmt.Println("運転免許証が取得できます") fallthrough case i >= 16: fmt.Println("女性なら結婚できます") default: fmt.Println("子供です") } } |