注:
1. switch / caseの後に式(つまり、定数、変数、および戻り値のある関数)があります。
2.ケースの後の各式の値のデータ型は、スイッチ式のデータ型と一致している必要があります。
3.大文字と小文字の後に、コンマで区切って複数の式を含めることができます。
4.ケースの後ろの式が定数値である場合、それを繰り返さないでください。
5.ケースの後にブレークを入れる必要はありません。プログラムがケースに一致すると、対応するコードブロックが実行され、スイッチが終了します。一致するものがない場合は、デフォルトが実行されます。
6.デフォルトのステートメントは必要ありません。
7.切り替え後、if --elseブランチを使用するのと同様に、式はありません。
8.切り替えの直後にセミコロンで終わる変数を宣言することもできますが、お勧めしません。
9.スイッチペネトレーション:フォールスルーがcaseステートメントに追加された場合、フォールスルーは引き続き次のケースを実行し、デフォルトでは1つのレイヤーのみにペネトレーションします。
10.type-switch:インターフェイス変数で実際にポイントされている変数のタイプを判別します。
package main
import (
"fmt"
)
func main() {
var x interface{}
var y = 10
x=y
switch i := x.(type) {
case nil:
fmt.Printf("x的类型是:%T",i)
case int:
fmt.Printf("x是 int 类型")
case float64:
fmt.Printf("x是 float64 类型")
case func(int) float64:
fmt.Printf("x是func(int)类型")
case bool,string:
fmt.Printf("x是bool或者string类型")
default:
fmt.Printf("未知型")
}
}
実行結果は以下のとおりです。
ケース:ユーザーが入力した月に応じて、その月が属する季節を印刷します。
package main
import (
"fmt"
)
func main() {
//根据用户输入的月份,打印该月份所属的季节
var month byte
fmt.Print("请输入月份:")
fmt.Scanln(&month)
switch month {
case 3, 4, 5:
fmt.Println("春天")
case 6, 7, 8:
fmt.Println("夏天")
case 9, 10, 11:
fmt.Println("秋天")
case 12, 1, 2:
fmt.Println("冬天")
default:
fmt.Println("输入有误...")
}
}
実行結果を下図に示します。
スイッチの選択と次の場合:
- 判断する特定の値が多くなく、それらが整数、浮動小数点数、文字、および文字列に準拠している場合。簡潔で効率的なswitchステートメントを使用することをお勧めします。
- その他の状況:間隔の判断および結果がブール型であるとの判断にifを使用します。より広い範囲で使用される場合。