golang switch case語句 簡介
阿新 • • 發佈:2021-02-10
注意:
1.switch/case 後是一個表示式(即:常量,變數,一個有返回的函式都可以);
2.case後的各個表示式的值的資料型別,必須和switch的表示式資料型別一致;
3.case後面可以帶多個表示式,使用逗號間隔;
4.case後面的表示式如果是常量值,則要求不能重複;
5.case後面不需要帶break,程式匹配到一個case後就會執行對應的程式碼塊,然後退出switch,如果一個都匹配不到,則執行default;
6.default語句不是必須的;
7.switch 後也可以不帶表示式,類似 if --else分支來使用;
8.switch 後也可以直接宣告一個變數,分號結束,不過不推薦。
9.switch穿透:如果在case語句增加fallthrough,則會繼續執行下一個case,預設只穿透一層。
10.type-switch :來判斷interface變數中實際指向的變數型別,比如:
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的選擇:
- 如果判斷的具體數值不多,而且符合整數,浮點數,字元,字串這幾種型別。建議使用switch語句,簡潔高效。
- 其他情況:對區間判斷和結果為bool型別的判斷,使用if,if的使用範圍更廣。