package main
import “fmt”
func main(){
//(7)switch后也可以不帶表達式,類似多個if-else分支來使用。【案例演示】
//(8)switch后也可以直接聲明/定義一個變量,分號結束,不推薦。(案例演示)
//(9)switch穿透-fallthrough,如果在case語句塊后增加fallthorough,則會繼續執行下一個case,也叫switch穿透。
//switch 后也可以不帶表達式,類似if --else分支來使用。【案例演示】
var age int = 10
switch {
case age == 10:
fmt.Println("age == 10")
case age ==20:
fmt.Println("age == 20")
default:
fmt.Println("沒有匹配到")
}
//case 中也可以對age 範圍進行判斷
var score int =30
switch {
case score > 90:
fmt.Println("成績優異..")
case score >=70 && score <= 90:
fmt.Println("成績優良...")
case score >=60 && score <= 70:
fmt.Println("成績及格...")
default:
fmt.Println("不及格")
}
//switch后也可以直接聲明/定義一個變量,分號結束,不推薦。
switch grade :=90; {
case grade > 90:
fmt.Println("成績優異~..")
case grade >=70 && grade <= 90:
fmt.Println("成績優良~...")
case grade >=60 && grade <= 70:
fmt.Println("成績及格~...")
default:
fmt.Println("不及格~")
}
//switch穿透-fallthrough,如果在case語句塊后增加fallthorough,則會繼續執行下一個case,也叫switch穿透。
var num int = 10
switch num {
case 10:
fmt.Println("ok1")
fallthrough//默認只能穿透一層
case 20:
fmt.Println("ok2")
case 30:
fmt.Println("ok3")
default:
fmt.Println("沒有匹配到")
}
//switch細節討論
//10)Type Switch;switch 語句還可以被用於type-switch來判斷某個interface變量中實際指向的變量類型【還沒有學interface,先體驗一把】
var x interface{}
var y = 10.0
x = y
switch i := x.(type) {
case nil:
fmt.Println("x的類型~:%T",i)
case int:
fmt.Println("x是 int 型")
case float64:
fmt.Println("x 是 float64 型")
case func(int) float64:
fmt.Println("x是func(int)型")
case bool,string:
fmt.Println("x是bool或string型")
default:
fmt.Println("未知型")
}
}