elseの概要
条件分岐の制御 Goの予約語 | ||
else 概要 |
||
|
基本的なelseの使い方
if
文とelse
を使った条件分岐の基本的な例を示します。
package main
import "fmt"
func main() {
num := 10
if num > 10 {
fmt.Println("10より大きい")
} else {
fmt.Println("10以下")
}
}
解説:
if num > 10
の条件を評価し、真なら「10より大きい」を出力。- 条件が偽なら、
else
ブロックの「10以下」が実行される。
実行結果:
10以下
else ifを使った複数条件の分岐
else if
を使うと、複数の条件を順番に評価できます。
package main
import "fmt"
func main() {
num := 75
if num >= 90 {
fmt.Println("評価: A")
} else if num >= 80 {
fmt.Println("評価: B")
} else if num >= 70 {
fmt.Println("評価: C")
} else {
fmt.Println("評価: D")
}
}
解説:
- 条件を上から順番に評価し、最初に真になったブロックを実行する。
- どの条件にも当てはまらない場合、最後の
else
ブロックが実行される。
実行結果:
評価: C
if-elseを一行で書く(短縮構文)
Goでは、if
文の条件部分で変数を定義し、簡潔に記述できます。
package main
import "fmt"
func main() {
if num := 15; num > 10 {
fmt.Println("10より大きい")
} else {
fmt.Println("10以下")
}
}
解説:
if num := 15; num > 10
のように、条件の前で変数を定義できる。- この変数は
if
とelse
のスコープ内でのみ使用可能。
実行結果:
10より大きい
注意事項
- elseの前に改行しない: Goでは
else
を新しい行に書くとコンパイルエラーになる。 - 条件が複雑になりすぎる場合はswitchを検討:
if-else
が多くなると可読性が低下するため、場合によってはswitch
を使う方が良い。 - if文の短縮構文で宣言した変数はスコープ内のみで有効:
if num := 10; num > 5
で定義したnum
はif
とelse
の中でしか使えない。
よくある質問
- Q: elseの前に改行するとエラーになるのはなぜですか?
- A: Goの構文ルールでは、
if
の閉じカッコとelse
は同じ行に書く必要があります。 - Q: elseが不要な場合はありますか?
- A: はい。例えば、
if
の条件が真なら処理し、偽なら何もしない場合、else
を省略できます。 - Q: 短縮構文の変数はif文の外で使えますか?
- A: いいえ。
if
文内で定義した変数は、そのスコープ内でのみ有効です。 - Q: else ifは何回でも使えますか?
- A: はい。必要に応じて何回でも使用できますが、多すぎると可読性が低下するため注意が必要です。
まとめ
else
は、if
の条件が偽だった場合に実行する処理を指定する。else if
を使うと、複数の条件を順番に評価できる。- 短縮構文を使うと、
if
文の中で変数を宣言できる。 else
を新しい行に書くとコンパイルエラーになるので注意が必要。