分岐(switch文)

switch文は条件によって処理の流れを制御する手段です。

switch文の書き方

キーワードswitchを使って分岐処理を記述します。 基本形は次の通りです。casedefaultは省略できます。

switch 式 {
case1:
    式が式1と合致する場合の処理
case2:
    式が式2と合致する場合の処理
default:
    式がcaseの式1、式2に合致しなかった場合の処理
}

サンプルコードは次の通りです。

const (
    sunday = iota
    monday
    tuesday
    wednesday
    thursday
    friday
    saturday
)

w := sunday
switch w {
case tuesday:
    fmt.Println("10%割引です。")
case monday, wednesday:
    fmt.Println("15%割引です。")
default:
    fmt.Println("通常価格です。")
}
// 実行結果:
// 通常価格です。

switch文の中でしか使わない変数は、式の前に宣言できます。

switch 変数宣言; 式 {
    分岐処理
}

サンプルコードは次の通りです。

m := map[string]int{"x": 1, "y": 2}
switch v := m["x"]; v {
case 1, 2:
    fmt.Println("1 or 2")
case 3:
    fmt.Println("3")
}
// 実行結果:
// 1 or 2

キーワードswitchの後の式は省略してcaseの式のみ記載することでもできます。

switch {
case1:
    式1が真の場合の処理
case2:
    式2が真の場合の処理
default:
    caseにマッチしなかった場合の処理
}

サンプルコードは次の通りです。

age := 1
switch {
case age < 20:
    fmt.Println("未成年です。")
case age < 65:
    fmt.Println("成人です。")
default:
    fmt.Println("高齢者です。")
}
// 実行結果:
// 未成年です。