概要
今回のブログポストではGolangでswitch文を使う方法について説明します。このブログポストで紹介するコードは次のリンクで確認できます。
switch文
if文は条件を検査してコードブロックを実行しますが、switch文は値を検査してコードブロックを実行します。
switch 比較値{
  case 値1:
    コードブロック
  case 値2:
    コードブロック
  default:
    コードブロック
}
Golangでswitch文を使う方法について調べるためmain.goファイルを生成して次のように修正します。
package main
import "fmt"
func main() {
  a := 2
  switch a {
  case 1:
    fmt.Println("a == 1")
  case 2:
    fmt.Println("a == 2")
  case 3:
    fmt.Println("a == 3")
  default:
    fmt.Println("a is not 1, 2 or 3")
  }
}
プログラムを実行すると次のような結果が確認できます。
# go run main.go
a == 2
break & fallthrough
他の言語ではswitch文を使う時、breakを使ってコードブロックを終了しますが、Golangではbreakを省略します。
他の言語ではbreak文を省略したら、次のケース文も一緒に実行されます。しかし、Golangではbreak文がそもそもないので、次のケース文も一緒に実行したい場合は、次のようにfallthroughを使う必要があります。
package main
import "fmt"
func main() {
  a := 2
  switch a {
  case 1:
    fmt.Println("a == 1")
  case 2:
    fmt.Println("a == 2")
    fallthrough
  case 3:
    fmt.Println("a == 3")
  default:
    fmt.Println("a is not 1, 2 or 3")
  }
}
上のコードを実行すると以前とは違って次のように、次のケースブロックも実行されることが確認できます。
# go run main.go
a == 2
a == 3
複数の値検査
Golangでは次のように複数の値を検査することができます。
switch 比較値{
  case 値1, 値2:
    ...
  case 値3, 値4:
    ...
  case 値5:
    ...
  default:
    ...
}
Golangで複数値を検査する方法を確認するためmain.goファイルを次のように修正します。
package main
import "fmt"
func main() {
  a := 2
  switch a {
  case 1, 3, 5, 7, 9:
    fmt.Println("Odd")
  case 2, 4, 6, 8:
    fmt.Println("Even")
  default:
    fmt.Println("Please insert 0 < value < 10.")
  }
}
上のプログラムを実行すると次のような結果が確認できます。
# go run main.go
Even
初期化文
switch文もif文と同じように初期化文を使うことができます。
switch 初期化文; 比較値{
  case 値1, 値2:
    ...
  case 値3, 値4:
    ...
  case 値5:
    ...
  default:
    ...
}
switch文で初期化文を使う方法を確認するためmain.goファイルを次のように修正します。
package main
import "fmt"
func main() {
  switch a := 2; a {
  case 1, 3, 5, 7, 9:
    fmt.Println("Odd")
  case 2, 4, 6, 8:
    fmt.Println("Even")
  default:
    fmt.Println("Please insert 0 < value < 10.")
  }
}
上のプログラムを実行すると下記のような結果が確認できます。
# go run main.go
Even
完了
これでGolangでswitch文を使う方法を確認してみました。Golangでswitch文は他の言語とは違ってbreakを省略することができるし、fallthroughを使って次のケースぶんを一緒に実行することができます。また、if文と同じように初期化文を使えることを確認しました。
 私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります! 
アプリ広報
Dekuが開発したアプリを使ってみてください。Dekuが開発したアプリはFlutterで開発されています。興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。






