defaultの概要
| Switch文のデフォルト処理 Goの予約語 | ||
|
default 概要 |
||
|
基本的なdefaultの使い方
以下のコードは、switch文で変数の値に応じて処理を分岐し、どのcaseにも該当しない場合はdefaultを実行する例です。
package main
import "fmt"
func main() {
value := 3
switch value {
case 1:
fmt.Println("値は1です")
case 2:
fmt.Println("値は2です")
default:
fmt.Println("値は1または2ではありません")
}
}
解説:
- 変数
valueの値が1または2の場合は、それぞれ対応するcaseの処理が実行されます。 - それ以外の値の場合、
defaultの処理が実行され、「値は1または2ではありません」と表示されます。
実行結果:
値は1または2ではありません
defaultを他のcaseの前に書く場合
通常、defaultは最後に記述しますが、Goではcaseの前に書いても問題なく動作します。
package main
import "fmt"
func main() {
value := 2
switch value {
default:
fmt.Println("どの条件にも一致しません")
case 1:
fmt.Println("値は1です")
case 2:
fmt.Println("値は2です")
}
}
解説:
- このコードでは
defaultを最初に書いていますが、caseの値が一致すれば、適切なcaseの処理が実行されます。 - 変数
valueの値が2なので、「値は2です」と表示されます。
実行結果:
値は2です
defaultを使うメリット
- エラーハンドリングに役立つ: 予期しない値に対して、デフォルトの処理を実行できる。
- 条件漏れを防ぐ: どの
caseにも該当しない場合の処理を明示的に指定できる。 - 柔軟な配置が可能:
defaultはswitch文の最後に書く必要はなく、任意の位置に配置できる。
注意事項
- 必ずしもdefaultが必要なわけではない: すべてのケースをカバーできるなら、
defaultは省略可能。 - defaultを先に書くと可読性が低下する: 技術的には可能だが、通常は最後に書く方が直感的。
- 無意味なdefaultの記述を避ける:
default内で何もしない場合は不要。
よくある質問
- Q: defaultは必ず書かなければいけませんか?
- A: いいえ。省略可能ですが、予期しない入力に対処するために記述するのが望ましいです。
- Q: Goのswitch文ではなぜdefaultが重要なのですか?
- A: Goの
switch文はbreakが自動で挿入されるため、caseに一致しない場合の処理を明示的に指定することが重要です。 - Q: defaultをcaseの前に書くことは推奨されますか?
- A: 技術的には可能ですが、可読性の観点から通常は最後に書くのが一般的です。
- Q: defaultの実行を防ぐ方法はありますか?
- A: すべての可能な値に
caseを用意すれば、defaultは不要になります。ただし、保険として記述しておくのがベストです。
まとめ
defaultはswitch文でどのcaseにも一致しない場合の処理を指定する。- 最後に書くのが一般的だが、他の
caseの前に書いても動作する。 - 条件漏れを防ぎ、エラーハンドリングに役立つ。