コンテンツにスキップ

Go/else if

出典: フリー教科書『ウィキブックス(Wikibooks)』
< Go

Go言語において、else if 句は、if ステートメントと組み合わせて使用され、複数の条件を順に評価するための独立した構文要素です。先行する if の条件が偽 (false) であった場合に、さらに別の条件を評価し、その結果に基づいて特定のコードブロックを実行します。

構文:

[編集]
if 条件式1 {
	// 条件式1 が true の場合に実行されるコード (if節)
} else if 条件式2 {
	// 条件式1 が false で、条件式2 が true の場合に実行されるコード (else if節)
} else {
	// どの条件式も false の場合に実行されるコード (else節 - 省略可能)
}

動作:

[編集]
  1. 最初に if条件式1 が評価されます。
  2. 条件式1true なら、対応する {} 内のコード (if 節) が実行され、以降の else ifelse はスキップされます。
  3. 条件式1false なら、次の else if条件式2 が評価されます。
  4. 条件式2true なら、対応する {} 内のコード (else if 節) が実行され、以降の else ifelse はスキップされます。
  5. この評価は、記述された順に else if 句がなくなるまで続きます。
  6. もし、どの ifelse if の条件式も true にならなかった場合、else 句が存在すれば、その {} 内のコード (else 節) が実行されます。

重要な特徴:

[編集]
  • 独立した構文要素: else if は、else の後に単純に if を記述したものではなく、Go言語の文法として独立した意味を持ちます。
  • 複数の条件評価: 複数の else if 句を連ねることで、多段階の条件分岐を記述できます。
  • 排他性: いずれかの条件が true となり、対応するブロックが実行されると、if-else if-else 構造全体の処理は終了します。
  • スコープ: ifelse if の条件部分で短縮変数宣言 (:=) を行うと、その変数のスコープはその if または else if ブロック内に限定されます。
package main

import "fmt"

func main() {
	score := 85

	if score >= 90 {
		fmt.Println("評価: 秀")
	} else if score >= 80 {
		fmt.Println("評価: 優")
	} else if score >= 70 {
		fmt.Println("評価: 良")
	} else {
		fmt.Println("評価: 可")
	}
}

この例では、score の値に応じて対応する評価が出力されます。

else if 句は、Goプログラムにおいて、複数の条件に基づいて異なる処理を行いたい場合に不可欠な構文要素です。