Go言語:switch
switchの話。
- ifステートメントと同じで、条件式にカッコは不要。
- ifステートメントと同じで、変数のスコープを持つ。
- swtichステートメントの条件式は省略することが可能。
- rubyのcase文と同じような書き方が可能。
- switch caseには、数値以外に、文字列などの値や、論理演算、関数の実行などを記述可能。
- swtich caseの評価は順番に、該当するものが存在するまで続く。
- 該当するものがあれば、評価が終わるので、全ては実行されない。
- Go言語のswitchは、他の言語のそれと違って、自動的にbreakされる。
- この挙動も、rubyのcase文と同じ。
- 自動的にbreakされたくない場合は、caseの処理の最後に、
fallthrough
を記述する。- fallthroughは、次のswitch caseは評価されずに、そのcaseの中の処理が実行される。
- 該当するswitch caseが存在しない場合は、defaultに飛ぶ。
- defaultはなくても良い。
試してみた
patternA zero called one called 1 patternB zero called one called 1 2
- patternAでは、自動的にbreakされていることがわかる。
- patternBで、
fallthrough
の次のswitch caseの評価がされずに、その中の処理が実行されていることがわかる。