文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
switch
有些时候需要写很多的 if-else
来实现一些逻辑处理,这个时候代码看上去就很丑很冗长,而且也不易于以后的维护,这个时候 switch
就能很好的解决这个问题。它的语法如下
switch sExpr {
case expr1:
some instructions
case expr2:
some other instructions
case expr3:
some other instructions
default:
other code
}
sExpr
和 expr1
、 expr2
、 expr3
的类型必须一致。Go 的 switch
非常灵活,表达式不必是常量或整数,执行的过程从上至下,直到找到匹配项;而如果 switch
没有表达式,它会匹配 true
。
i := 10
switch i {
case 1:
fmt.Println("i is equal to 1")
case 2, 3, 4:
fmt.Println("i is equal to 2, 3 or 4")
case 10:
fmt.Println("i is equal to 10")
default:
fmt.Println("All I know is that i is an integer")
}
在第 5 行中,把很多值聚合在了一个 case
里面,同时,Go 里面 switch
默认相当于每个 case
最后带有 break
,匹配成功后不会自动向下执行其他 case,而是跳出整个 switch
, 但是可以使用 fallthrough
强制执行后面的 case 代码。
integer := 6
switch integer {
case 4:
fmt.Println("The integer was <= 4")
fallthrough
case 5:
fmt.Println("The integer was <= 5")
fallthrough
case 6:
fmt.Println("The integer was <= 6")
fallthrough
case 7:
fmt.Println("The integer was <= 7")
fallthrough
case 8:
fmt.Println("The integer was <= 8")
fallthrough
default:
fmt.Println("default case")
}
上面的程序将输出
The integer was <= 6
The integer was <= 7
The integer was <= 8
default case
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论