[Golang] switch文

2021-10-10 hit count image

Golangでswitch文を使う方法について説明します。

概要

今回のブログポストでは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文がそもそもないので、次のケース文も一緒に実行したい場合は、次のようにfallthroughtを使う必要があります。

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文と同じように初期化文を使えることを確認しました。

私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!

Posts