ifの概要
条件分岐の制御 Goの予約語 | ||
if 概要 |
||
|
基本的なifの使い方
以下のコードは、整数の値をチェックし、条件に応じたメッセージを表示する基本的な例です。
package main
import "fmt"
func main() {
num := 10
if num > 10 {
fmt.Println("10より大きい")
}
}
解説:
if num > 10
の条件がtrue
なら、「10より大きい」と出力される。- この例では、
num
が10なので、何も出力されない。
実行結果:
(出力なし)
if-elseを使った条件分岐
if
とelse
を組み合わせることで、条件が満たされなかった場合の処理を追加できます。
package main
import "fmt"
func main() {
num := 10
if num > 10 {
fmt.Println("10より大きい")
} else {
fmt.Println("10以下")
}
}
解説:
if num > 10
の条件が満たされなかった場合、else
ブロックの処理が実行される。- この例では、
num
が10のため、「10以下」と出力される。
実行結果:
10以下
else ifを使った複数条件の分岐
else if
を使うことで、複数の条件を順番に評価できます。
package main
import "fmt"
func main() {
score := 85
if score >= 90 {
fmt.Println("評価: A")
} else if score >= 80 {
fmt.Println("評価: B")
} else if score >= 70 {
fmt.Println("評価: C")
} else {
fmt.Println("評価: D")
}
}
解説:
- 条件を上から順番に評価し、最初に
true
になったブロックの処理を実行する。 - どの条件にも該当しない場合、最後の
else
ブロックが実行される。
実行結果:
評価: B
ifの短縮構文(変数宣言付き)
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より大きい
注意事項
- if文の条件式は括弧で囲まない: Goでは、
if (num > 10)
のように括弧をつけるとエラーになる。 - elseの前に改行しない: Goでは、
else
を新しい行に書くとコンパイルエラーになる。 - 短縮構文の変数はスコープ内のみで有効:
if num := 10; num > 5
で定義したnum
はif
とelse
の中でしか使えない。
よくある質問
- Q: if文の条件に括弧をつけるべきですか?
- A: いいえ。Goでは
if
の条件式に括弧をつける必要はなく、つけるとコンパイルエラーになります。 - Q: elseの前に改行するとエラーになるのはなぜですか?
- A: Goの構文ルールでは、
if
の閉じカッコとelse
は同じ行に書く必要があります。 - Q: ifの短縮構文はどこで使うべきですか?
- A: 例えば、関数の戻り値を
if
内でチェックし、即座に処理を行いたい場合に便利です。 - Q: else ifは何回でも使えますか?
- A: はい。必要に応じて何回でも使用できますが、多すぎると可読性が低下するため、適切に整理することが推奨されます。
まとめ
if
は条件がtrue
の場合に処理を実行する。else
を使うと、条件が満たされなかった場合の処理を追加できる。else if
を使うことで、複数の条件を順番に評価できる。- 短縮構文を使うと、
if
文の中で変数を宣言できる。 - 条件式の括弧は不要で、
else
は改行せずに書く必要がある。