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はなくても良い。

試してみた

switchの挙動

patternA
zero called
one called
1
patternB
zero called
one called
1
2
  • patternAでは、自動的にbreakされていることがわかる。
  • patternBで、fallthroughの次のswitch caseの評価がされずに、その中の処理が実行されていることがわかる。