ホーム プログラミング言語 golang golang flow control Go 言語の switch case ステートメント

Go 言語の switch case ステートメント


 
 
Go 言語のスイッチは C 言語のスイッチよりも一般的です。式は定数である必要はなく、整数である必要もありません。ケースは一致する項目が見つかるまで上から下に順番に評価されます。式がない場合は true と一致するため、if else-if else をスイッチとして書き換えることができます。

 

C 言語やJavaなどの他の言語と比較して、Go 言語のスイッチ構造は使用がより柔軟であり、構文設計は可能な限り便利です。

基本的な書き方

Go 言語は switch の文法設計を改善しました。case は独立したコード ブロックです。次の行への実行を避けるために、break ステートメントを使用して現在の case コード ブロックからジャンプする必要はありません。サンプル コードは次のとおりです:

 var a = "hello"
switch a {
case "hello":
    fmt.Println(1)
case "world":
    fmt.Println(2)
default:
    fmt.Println(0)
} 

コード出力は次のとおりです。

1

上記の例では、それぞれのケースは文字列形式でデフォルト ブランチを使用していますが、Go 言語では、各スイッチがデフォルト ブランチを 1 つだけ持つことができると規定されています。

1) 1 分岐の多値

複数のケースをまとめる場合は、次のように記述できます。

 var a = "mum"
switch a {
case "mum", "daddy":
    fmt.Println("family")
} 

異なる case 式はカンマで区切られます。

2) 分岐式

case の後には、定数だけでなく if などの式も追加できます。コードは次のとおりです。

 var r int = 11
switch {
case r > 10 && r < 20:
    fmt.Println(r)
} 

この場合、スイッチの後に判定変数を続ける必要がないことに注意してください。

ケース間のフォールスルー – C 言語と互換性のあるケース設計

Go 言語では、ケースは独立したコードブロックであり、C 言語のように実行後すぐに次のケースが実行されるわけではありませんが、一部の移植コードとの互換性を考慮して、この機能を実現するために fallthrough キーワードが追加されています。コードは次のとおりです。

 var s = "hello"
switch {
case s == "hello":
    fmt.Println("こんにちは")
    fallthrough
case s != "world":
    fmt.Println("世界")
} 

コード出力は次のとおりです。

こんにちは
世界

新しく書かれたコードの場合、フォールスルーは推奨されません。

 

「 Go 言語の switch case ステートメント」についてわかりやすく解説!絶対に観るべきベスト2動画

golang の switch と case の 2 つの構文
Switch Statements in GoLang