笔者个人网站:秋码记录
本文已首发于秋码记录: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 秋码记录")
}
}

本文探讨了Go语言中switch结构的特点,包括无需显式break的case逻辑和灵活的条件表达式。示例展示了如何在switch中使用变量、布尔表达式,并利用fallthrough实现跨case执行。此外,还讲解了Go的switch与C/C++的switchcase语句的差异。
1274

被折叠的 条评论
为什么被折叠?



