Go 速習チュートリアル

Go 言語の else if 文

1. else if ステートメント

最初の条件が false(偽)であった場合に、新しい条件を指定して評価を継続したいときは else if ステートメントを使用します。

2. シンタックス

if condition1 {
   // condition1 が true の場合に実行されるコード
} else if condition2 {
   // condition1 が false かつ condition2 が true の場合に実行されるコード
} else {
   // condition1 と condition2 が両方 false の場合に実行されるコード
}

3. else if ステートメントの活用

以下の例では、else if を使用して複数の時間帯に応じた処理の分岐を行っています。

3.1. 実装例

package main
import ("fmt")

func main() {
  time := 22
  if time < 10 {
    fmt.Println("おはようございます。")
  } else if time < 20 {
    fmt.Println("こんにちは。")
  } else {
    fmt.Println("こんばんは。")
  }
}

実行結果:

こんばんは。

3.2. コードの解説

上記のコードでは、time(22)が 10 以上であるため、最初の条件false と判定されます。次に else if ステートメントの条件(time < 20)が評価されますが、これも false です。最終的に condition1condition2 の両方が false となったため、else ブロックの処理が実行され、「こんばんは。」と出力されます。
もし time が 14 であれば、プログラムは「こんにちは。」を出力します。

4. 数値比較における分岐例

数値の大小関係や等価性を判定する際にも else if は有効です。

4.1. 実装例

package main
import ("fmt")

func main() {
  a := 14
  b := 14
  if a < b {
    fmt.Println("aはbより小さいです。")
  } else if a > b {
    fmt.Println("aはbより大きいです。")
  } else {
    fmt.Println("aとbは等しいです。")
  }
}

実行結果:

aとbは等しいです。

5. 注意点:条件評価の優先順位

重要: もし condition1condition2両方とも true と評価される場合、最初に記述されている condition1 のコードブロックのみが実行されます。

5.1. 実装例

package main
import ("fmt")

func main() {
  x := 30
  if x >= 10 {
    fmt.Println("xは10以上です。")
  } else if x > 20 {
    fmt.Println("xは20より大きいです。")
  } else {
    fmt.Println("xは10未満です。")
  }
}

実行結果:

xは10以上です。

この例では、x が 30 であるため x >= 10x > 20 の両方が true となりますが、最初に合致した if ブロックの処理のみが行われ、それ以降の else if は評価されません。