package main
import "fmt"
/*
switch语法结构:
switch 变量名 {
case 数值1:分支1
case 数值2:分支2
...
default:最后一个分支
}
注意事项:
1.switch可以作用在其他类型上,case后的数值必须和switch作用的变量类型一致
2.case是无序的
3.case后的数值是唯一的
4.default语句是可选操作
*/
func main() {
num := 4
switch num {
case 1:
fmt.Println("一季度")
case 2:
fmt.Println("二季度")
case 3:
fmt.Println("三季度")
case 4:
fmt.Println("四季度")
default:
fmt.Println("数据有误")
}
f := true
switch f {
case true:
fmt.Println("对")
case false:
fmt.Println("错")
}
//特殊用法1:省略switch后面的变量,相当于直接作用在true上
switch {
case num == 1:
fmt.Println("一季度")
case num == 2:
fmt.Println("二季度")
case num == 3:
fmt.Println("三季度")
case num == 4:
fmt.Println("四季度")
default:
fmt.Println("数据错误")
}
//特殊用法2:case后可以同时跟随多个数值
num1 := 8
mod1 := num1 % 10
switch mod1 {
case 1, 3, 5, 7, 9:
fmt.Printf("%d单数\n", num1)
case 0, 2, 4, 6, 8:
fmt.Printf("%d双数\n", num1)
}
//特殊用法3:switch后可以加初始化语句,作用域在switch语句内
switch mod2 := num1 % 10; mod2 {
case 1, 3, 5, 7, 9:
fmt.Printf("%d单数\n", num1)
case 0, 2, 4, 6, 8:
fmt.Printf("%d双数\n", num1)
}
//switch中的break和fallthrough
switch n := 2; n {
case 1:
fmt.Println(n)
fmt.Println("1")
case 2:
fmt.Println(n)
break //跳出
fmt.Println("2")
}
switch m := 1; m {
case 1:
fmt.Println(1)
fallthrough //无需匹配,继续执行下一个case语句
case 2:
fmt.Println(2)
}
}