笔者个人网站:秋码记录
本文已首发于秋码记录:Go 语言中的 switch 结构(Let’s Go 十七)
相较于c/c++
等的switch case
,Go
对switch
做了很大改进,case
与case
之间是不需要写上break
,也能跳出当前case
语句,而且,switch
表达式可以是任何类型的噢!
switch condition {
case one:
//do something
xase two:
//TODO
default:
//do something
}
package main
import (
"fmt"
)
func main() {
var name = "qiucode"
switch name {
case "qiucode":
fmt.Println("欢迎浏览 https://qiucode.cn")
case "qiuma":
fmt.Println("秋码记录")
default:
fmt.Println("qiucode.cn 秋码记录")
}
}
case
后面不仅仅跟着常量,还可以像if
那般使用。
package main
import (
"fmt"
)
func main() {
var num int = 17
switch {
case num > 10 && num < 20:
fmt.Println("这个数值确实大于十小于二十!")
}
}
当switch
不提供任何被判断值时,其实际上默认为判断是否是true
,而后在每个case
分支中进行判断不同的表达式,直至任何一个结果为true
时,该分支的代码才会被执行。
若想跨越case
,兼容c
语言的话,可以使用fallthrough
这个关键字。
package main
import (
"fmt"
)
func main() {
var name = "qiucode"
switch name {
case "qiucode":
fmt.Println("欢迎浏览 https://qiucode.cn")
fallthrough
case "qiuma":
fmt.Println("秋码记录")
default:
fmt.Println("qiucode.cn 秋码记录")
}
}