条件分岐(if, else, switch)

Go言語における条件分岐は、プログラムの実行の流れを制御するために使用されます。主に使用される構文は if, else if, else, そして switch です。それぞれの構文と使い方を詳しく説明します。


1. if

Goの if 文は非常にシンプルで、括弧 () を使わない点が特徴です。

構文

go
if 条件式 { // 条件が真のときの処理 }

go
x := 10 if x > 5 { fmt.Println("x は 5 より大きい") }

初期化文付き if

if 文では、条件の前に初期化文を書くことができます(セミコロンで区切る)。

go
if x := getValue(); x > 0 { fmt.Println("正の数です") }

この xif ブロック内でのみ有効です。


2. if - else if - else

複数の条件を順に評価したい場合は else ifelse を使います。

構文

go
if 条件式1 { // 条件1が真のとき } else if 条件式2 { // 条件2が真のとき } else { // 全ての条件が偽のとき }

go
score := 75 if score >= 90 { fmt.Println("優秀") } else if score >= 70 { fmt.Println("合格") } else { fmt.Println("不合格") }

3. switch

Goの switch は複数の条件を簡潔に記述でき、break を明示的に書く必要がありません(デフォルトでブレークされます)。

構文

go
switch 式 { case1: // 式が値1と一致する場合の処理 case2: // 式が値2と一致する場合の処理 default: // どのケースにも一致しない場合の処理 }

go
day := "Monday" switch day { case "Monday": fmt.Println("月曜日です") case "Friday": fmt.Println("金曜日です") default: fmt.Println("他の曜日です") }

式なしの switch

switch に式を指定せず、各 case に条件を書くこともできます(if - else if の代替として便利です)。

go
x := 42 switch { case x < 0: fmt.Println("負の数") case x == 0: fmt.Println("ゼロ") case x > 0: fmt.Println("正の数") }

4. fallthrough

Goの switch では、通常 case が一致するとそこで終了しますが、fallthrough を使うと次の case に処理を続けられます。

go
x := 2 switch x { case 2: fmt.Println("2") fallthrough case 3: fmt.Println("3") }

このコードでは、2 に一致し、次の case 3 も実行されます。


まとめ

構文 用途
if 単一条件の判定
if-else 条件が真でない場合の代替処理
else if 複数条件を順に評価
switch 値による分岐に便利
式なしswitch 条件ごとに case を分ける柔軟な分岐処理
fallthrough 次の case へ強制的に処理を移行

生成日:2025/05/03