MENU

【3分で理解する】golangのswitch文にfallthroughがある場合の挙動について

本ページではアフィリエイトリンク(PR)が含まれています

今回はgolangのswitch文におけるfallthroughについて解説していきます。

目次

switch文

Go言語にはswitch文を使うことで一つの変数から条件分岐を判定を行うことができます。

func main() {
	a := 2
	switch a {
	case 1:
		fmt.Println("×")
	case 2:
		fmt.Println("〇")
	case 3:
		fmt.Println("×")
	}
}

このように変数aの値によって処理を分岐することができます。今回はa=2のため、実行結果はとなります

golangのfallthroughとは

Goでは一つでもcase式に合致して処理を行ってしまえば、暗黙的にbreakが入ることでswitch処理を抜けるという言語仕様をしています。

break文が暗黙的に入るということはswitch文の中で複数のcase式に入ることができないと思ってしまいますが、その心配は要りません。

今回紹介する「fallthrough」をつかうことで、あるcase式が成立した後にでも次の節を実行してくれます。

func main() {
	a := 2
	switch a {
	case 1:
		fmt.Println("×")
	case 2:
		fmt.Println("〇")
		fallthrough
	case 3:
		fmt.Println("×")
	default:
		fmt.Println("どれにも合致しませんでした。")
	}
}

case 2の処理が実行された後、fallthroughすることでcase3にも入ります。

よってこのコードの実行結果は〇 ×

case 3にはfallthroughが書かれていないため、暗黙的にbreak文が実行されswitchを抜けます。

func main() {
	a := 2
	switch a {
	case 1:
		fmt.Println("×")
	case 2:
		fmt.Println("〇")
		fallthrough
	case 3:
		fmt.Println("×")
		fallthrough
	default:
		fmt.Println("どれにも合致しませんでした。")
	}
}

case 3にもfallthroughを書いてみました。

このように書くことで実行結果は「〇 × どれにも合致しませんでした。」となり。case2→case3→defaultを通過していることがわかります。

複数のcaseの節の処理を実行したい場合は「fallthrough」を使ってみましょう。

golangをもっと詳しくなりたい方に

golang学習のために筆者が実際に受講したUdemy教材をまとめています。

あわせて読みたい
【入門】golangの学習におすすめのUdemy教材5選 これから業務でgolangを使うことになった方、これからgolangを使ってキャリアを歩んでいきたいという方でどのように学習していこうか悩んでいる方もいるかと思います。 ...

golang学習のために筆者が実際に読んでおすすめしたい本をまとめています。

あわせて読みたい
【入門】golangの学習におすすめの本/書籍7選 これから業務でgolangを使うことになった方、これからgolangを使ってキャリアを歩んでいきたいという方でどのように学習していこうか悩んでいる方もいるかと思います。 ...
タメになったらシェアお願いします!
  • URLをコピーしました!
  • URLをコピーしました!
目次