本文へスキップ
BecomeCoder

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

条件分岐 ― if

ブラウザで完結

導入

「もし〜なら」で処理を分けるのが if です。Go の if は条件を 丸カッコで囲みませんが、ブロックの {}必須です。

説明

package main

import "fmt"

func main() {
    score := 72

    if score >= 80 {
        fmt.Println("合格(優)")
    } else if score >= 60 {
        fmt.Println("合格")
    } else {
        fmt.Println("不合格")
    }
}
  • 条件式にカッコは不要(if score >= 80)。
  • {if と同じ行に置く(改行するとコンパイルエラー)。
  • else / else if は、前のブロックを閉じる }同じ行に書きます。

Go には「if の中でだけ使う変数」を条件の前に宣言できる書き方があります。

if n := score % 2; n == 0 {
    fmt.Println("偶数です")
} else {
    fmt.Println("奇数です", n)
}

n := score % 2; で作った n は、この ifelse の中だけで有効です。使う範囲を最小に絞れるので、Go でよく使われる書き方です。

やってみよう

score の値を色々変えて、どのメッセージが表示されるか追ってみましょう。>=> に変えると境界(ちょうど 80 点など)の判定が変わります。

実際に動かしてみよう

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

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

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