English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
switch文脈は、実行をコードの異なる部分に転移するための多路分支文です。それは、表現式の値(caseと呼ばれることもあります)に基づいて効果的に実行を転移する方法を提供します。Go言語は2種類のswitch文をサポートしています:
式switch
タイプswitch
式switchはC、C ++、Java言語のswitch文。それにより、式の値に基づいてコードの異なる部分に実行を分派する簡単な方法を提供します。
文法:
switch optstatement; optexpression{ case expression1: 文.. case expression2: 文.. ... default: 文.. }
重要事項:
式switchのoptstatementとoptexpressionはオプションの文です。
同時に存在する場合optstatementおよびoptpressionその場合、それらの間にはセミコロン(;)を使用する必要があります。
switchに式が含まれていない場合、コンパイラはその式がtrueと仮定します。
オプションの文、つまりoptstatementは、変数の宣言、インクリメントやアサインメント文、関数呼び出しなどのシンプルな文を含みます。
オプションの文に変数がある場合、その変数の範囲はそのswitch文に限定されます。
switch文では、case文とdefault文にはbreak文が含まれていませんが、プログラムが必要な場合はbreak文とfallthrough文を使用できます。
デフォルト(default)文はswitch文ではオプションです。
caseが複数の値を含んでおり、これらの値はカンマ(、)で区切られている場合。
caseに式が含まれていない場合、コンパイラはその式がtrueと仮定します。
指定された数字が何曜日かを取得する例:
package main import "fmt" func main() { // Switch文は、例えばオプションの文、day := と同時に使用できます4 および式、例えば:day switch day := 4; day { case 1: fmt.Println("Monday") case 2: fmt.Println("Tuesday") case 3: fmt.Println("Wednesday") case 4: fmt.Println("Thursday") case 5: fmt.Println("Friday") case 6: fmt.Println("Saturday") case 7: fmt.Println("Sunday") default: fmt.Println("Invalid") } }
出力:
木曜日
switch文はオプションの文と式を含まない例:
package main import "fmt" func main() { var value int = 2 // switch文はオプションの文と式を含まない switch { case value == 1: fmt.Println("Hello") case value == 2: fmt.Println("Bonjour") case value == 3: fmt.Println("Namstay") default: fmt.Println("Invalid") } }
出力:
Bonjour
デフォルトの文がないswitch文、case文の複数の値:
package main import "fmt" func main() { var value string = "five" //デフォルト文がないswitch文、case文の複数の値 switch value { case "one": fmt.Println("C#") case "two", "three": fmt.Println("Go") case "four", "five", "six": fmt.Println("Java") } }
出力:
Java
型を比較したい場合、タイプswitchを使用します。このswitchでは、caseには、switch式に現れる型と比較する型が含まれています。
文法:
switch optstatement; typeswitchexpression{ case typelist 1: 文.. case typelist 2: 文.. ... default: 文.. }
重要事項:
オプション文、つまりoptstatementで、switch式と同様です。
caseが複数の値を含んでおり、これらの値はカンマ(、)で区切られている場合。
タイプswitch文では、case文とdefault文にはbreak文が含まれていません。ただし、必要に応じてbreak文とfallthrough文を使用できます。
タイプswitch文では、デフォルト文はオプションです。
typeswitchexpressionは、結果が型である式です。
typeswitchexpression中で=演算子を使用して式を割り当てた場合、その変数の型はcase子句中の型に依存します。case子句に2種類以上の型が含まれている場合、変数の型はtypeswitchexpressionで変数を作成した型です。
package main import "fmt" func main() { var value interface{} switch q := value.(type) { case bool: fmt.Println("値はブール型") case float64: fmt.Println("値はfloat64型) case int: fmt.Println("値はint型") default: fmt.Printf("値の型は: %T", q) } }
出力:
値の型は: <nil>