1. 程式人生 > 其它 >golang switch case語句 簡介

golang switch case語句 簡介

注意

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的選擇:

  1. 如果判斷的具體數值不多,而且符合整數,浮點數,字元,字串這幾種型別。建議使用switch語句,簡潔高效。
  2. 其他情況:對區間判斷和結果為bool型別的判斷,使用if,if的使用範圍更廣。