本文へスキップ
BecomeCoder

Goコース · 第2章 制御構文 · レッスン8

多方向の分岐 ― switch

ブラウザで完結

導入

if - else if がいくつも続くときは、switch の方が読みやすくなります。Go の switch は他言語より便利で、break を書かなくても次の case に流れ落ちません。

説明

package main

import "fmt"

func main() {
    day := "土"

    switch day {
    case "土", "日":
        fmt.Println("週末です")
    case "月":
        fmt.Println("週のはじまり")
    default:
        fmt.Println("平日です")
    }
}
  • case "土", "日": のように、カンマで複数の値をまとめられます。
  • case は自動でそこで終わります(break 不要)。
  • どれにも当てはまらないときは default が実行されます。

条件式を省いて、if の連なりのように書くこともできます。

switch {
case score >= 80:
    fmt.Println("優")
case score >= 60:
    fmt.Println("良")
default:
    fmt.Println("要努力")
}

switch { と値を書かない形は、範囲による分岐(〜以上・〜未満)に向いています。

やってみよう

day を “水” にすると default の「平日です」が表示されます。case "土", "日": のようにまとめられる点が、if - else if を並べるより読みやすいところです。

実際に動かしてみよう

下のエディタにGoを書いて「実行」を押すと、学習用シミュレータが fmt の出力を表示します(本物のGoコンパイラではなく、教材の範囲を再現した軽量エンジンです)。スライス・マップ・構造体・インターフェース・goroutine/channel なども動きます。本文の例を書き換えて動かしてみましょう(並行処理の実行順は決定的に再現しているため、本物のインターリーブとは異なる場合があります)。

Go — ブラウザ内で実行(学習用シミュレータ)

Goの教材サブセットを動かす学習用シミュレータを読み込みます(本物のGoコンパイラではなく、動きを再現した軽量な自作エンジンです)。
スクロールして表示された時点でも自動で読み込まれます。