概述
Golang中的switch比起其他语言的switch更灵活,除了支持常规的切换,如下:
switch i {
case 0:
fmt.Printf("0")
case 1:
fmt.Printf("1")
case 2:
fallthrough
case 3:
fmt.Printf("3")
case 4, 5, 6:
fmt.Printf("4, 5, 6")
default:
fmt.Printf("Default")
}
运行上面的案例,将会得到如下结果:
i = 0时,输出0;
i = 1时,输出1;
i = 2时,输出3;
i = 3时,输出3;
i = 4时,输出4, 5, 6;
i = 5时,输出4, 5, 6;
i = 6时,输出4, 5, 6;
i = 其他任意值时,输出Default。
这里switch后面的表达式甚至不是必需的,如下代码:
package main
import(
"fmt"
)
func main(){
var score int = 65
switch {
case 0<=score&&score<60:
fmt.Println("failed!!")
case 60<=score&&score<80:
fmt.Println("good!")
case 80<=score&&score<=100:
fmt.Println("perfect!!")
}
}
没有条件的 switch 同 switch true 一样,这一构造使得可以用更清晰的形式来编写长的 if-then-else 链。
Golang里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行后面的case代码。
package main
import "fmt"
func main() {
switch {
case false:
fmt.Println("The integer was <= 4")
fallthrough
case true:
fmt.Println("The integer was <= 5")
fallthrough
case false:
fmt.Println("The integer was <= 6")
fallthrough
case true:
fmt.Println("The integer was <= 7")
case false:
fmt.Println("The integer was <= 8")
fallthrough
default:
fmt.Println("default case")
}
}
执行结果:
The integer was <= 5
The integer was <= 6
The integer was <= 7
由此可以看出,switch从第一个expr为true的case开始执行,如果case带有fallthrough,程序会继续执行下一条case,不会再判断下一条case的expr,如果之后的case都有fallthrough,default出会被执行。
最后
以上就是醉熏橘子为你收集整理的Go语言switch语句的全部内容,希望文章能够帮你解决Go语言switch语句所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复