フォールスルー
記事画像
今回は、switch文についてのお話です。 以下にGoとPHPのswitch文があります。 【Go】 i:=1 switch i { case 0: fmt.Println("iは0") case 1: fmt.Println("iは1") case 2: fmt.Println("iは2") } 【PHP】 $i=1 switch ($i) { case 0: echo "iは0"; case 1: echo "iは1"; case 2: echo "iは2"; } このふたつのプログラムの出力結果は、同じになるでしょうか? 答えは、「同じにはならない」です。 Goの方は、 iは1 PHPの方は、 iは1 iは2 と出力されます。 PHPの場合は、以下のようにbreakを記述しないと次のcaseの処理も実行されてしまいます。 意外と書き忘れて意図しない挙動になっていたなどを耳にしたりします。 【PHP】 $i=1 switch ($i) { case 0: echo "iは0"; break; case 1: echo "iは1"; break; case 2: echo "iは2"; break; } ちなみにGoでPHPのように次のcaseの処理も実行させたい場合は、fallthroughを記述します。 【Go】 i:=1 switch i { case 0: fmt.Println("iは0") fallthrough case 1: fmt.Println("iは1") fallthrough case 2: fmt.Println("iは2") } 混乱を招くので、こういった同じ構文で言語によって挙動が違うものは、極力ないとありがたいですね。

--------------------------------------------------
社員を募集しております!

リクナビNEXT
《前職給与保障★年休128日★基本残業なし》プログラマ・SE
【正社員登用前提!】Webエンジニア*ITサポート★残業少

FINDJOB!
【正社員】エンジニア募集 ワークライフバランス 初学者 学びなおし【PHP,Java,Swift】

社員のゲーム実況チャンネル
$fugaのゲーム実況
この記事を書いた人
投稿者画像
根岸 聖司
部長、システムエンジニア
関連する記事