case里面两个条件_Go语言条件语句之 switch 语句

点击上方蓝色 “铁匠学编程” 关注我,让我们一起学习!

    switch语句会根据传入条件不同,选择不同的分支执代码进行执行,他可以代替多个 if else 子句,Go 语言的分支语句和 PHP 的类似,Go 不需要显示的通过break 进行退出。

package mainimport "fmt"func main() {  score := 100  switch {  case score >= 90:      fmt.Println("Grade: A")  case score >= 80 && score < 90:      fmt.Println("Grade: B")  case score >= 70 && score < 80:      fmt.Println("Grade: C")  case score >= 60 && score < 70:      fmt.Println("Grade: D")  default:      fmt.Println("Grade: F")  }}

在上面的程序中,switch 会将 score 与每个 case 语句进行从上到下的比较,并执行与选项匹配的第一个代码块进行执行。

注意:此处的 score 不能放到 switch 后面,否则会报错,只有在进行分支判断时候才可以

在选项列表中,不允许出现重复相等的条件判断,如下:

package mainimport "fmt"func main() {  score := 100  switch {  case score = 90:      fmt.Println("Grade: A")  case score = 90:      ...  default:      fmt.Println("Grade: F")  }}

上面的程序编译时会报错。

在Go语言中,我们可以用逗号分隔不同的分支条件来合并分支语句,如  case 90,100 ,这里我们不能像PHP 那样通过多个相邻的 case 语句来合并相同的分支语句,如下:

package mainimport "fmt"func main() {  switch score := 99; score {  case score 90: // 此时被m默认为空语句直接退出  case score 95:    fmt.Println("grade A")  case score 80, 85:    fmt.Println("grade B")  default:    fmt.Println("grade F")  }}

上面的例子中我们都添加了默认情况,就是在所有的分支语句都不匹配的时候,将运行默认情况,他的位置并不一定在最后,任何地方都可以。

fallthrough

前面我们说到不能通过相邻的 case 语句来合并相同的分支语句,我们可以通过 逗号 分隔来进行执行多个条件来合并语句。Go 语言在执行完某一个条件分支之后会自动退出当前条件语句,如果还想继续执行后续的分支语句,可以通过 fallthrough 来继续执行后面的分支语句。如下:

package mainimport "fmt"func main() {  score := 60  switch score {  ...  case 60:      fallthrough  case 65:      fmt.Println("Grade: D")  ...  } }

此时,就相当于合并了 case 60 和case 65 两个分支语句。

Go语言 的 Reflect 会根据类型断言进行判断,后面分享 反射的时候再来说。

如果您看到了我的文章,欢迎留下意见和建议,指出不足。感谢!

9e640a24f775abd0a0c1d938bf5eadd5.png

加油!不仅自己~还有你~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值