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

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 会根据类型断言进行判断,后面分享 反射的时候再来说。

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

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

case里面两个条件_Go语言条件语句之 switch 语句相关推荐

  1. c语言入门----详解分支语句(switch语句)

    目录标题 前言 一.为什么会有switch语句 二.switch语句的基本形式 三.switch语句中的break 1.为什么会有break语句 2.break语句的使用 四.switch语句中的de ...

  2. matlab if语句多个执行举例,初学Matlab,有两个语句,if语句和switch语句,有两个例子哪位大神能帮我讲讲...

    问题描述: 初学Matlab,有两个语句,if语句和switch语句,有两个例子哪位大神能帮我讲讲 if logical_expression statements elseif logical_ex ...

  3. 《C语言实战教学》:if语句和switch语句

    前情提要 你好哇! 大家久等了,新的一期来了!怎么样?刚入门的有没有去看上一期的内容呢?是不是深深地感受到了C语言的魅力?还是感到恐惧呢?哈哈. 如果感觉到恐惧的话大可不必,跟着我学,我保证你能写出比 ...

  4. c语言switch中用ifelse,初学者求问:用if单分支选择语句替换switch语句?if.else呢...

    菜鸟求问:用if单分支选择语句替换switch语句?if...else呢? 主要是关于default情况的处理,代码如下: /* Fig. 4.7: fig04_07.c Counting lette ...

  5. 1203.2——条件语句 之 switch语句

    用 if else 语句在处理多分支的时候,分支太多就会显得不方便,且容易出现 if 和 else配对出现错误的情况.例如,输入一个整数,输出该整数对应的星期几的英文表示: #include < ...

  6. java怎么延迟执行语句_Go语言defer(延迟执行语句)

    Go语言中关键字defer允许我们推迟到函数返回之前(或任意位置执行return语句之后)一刻才执行某个语句或函数(为什么要在返回之后才执行这些语句?因为return语句同样可以包含一些操作,而不是单 ...

  7. Go语言自学系列 | golang switch语句

    视频来源:B站<golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]> 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! ...

  8. C语言学习笔记:switch语句、循环语句--while、for、getchar,eof概念(推荐MSDN查询函数概念等)

    Switch语句:常用于多分支的情况 switch (整型表达式) { 语句项: } 其中,语句项是一些case语句,case可以放多个语句项: case 整型常量表达式: 语句: switch后面的 ...

  9. matlab中的case语句,MATLAB switch语句

    本文概述 开关是另一种条件语句, 它执行多个语句组中的一个. 如果我们要根据一组预定义的规则测试相等性, 那么switch语句可以替代if语句. 句法 switch switch_expression ...

最新文章

  1. 《百面机器学习》---AI算法工程师求职必备“面经”
  2. 申请英国学校最晚什么时候考出雅思呢?
  3. 欧几里得空间——度量矩阵
  4. 一些影响SCI论文接收的技术性问题盘点
  5. qaxobject识别html,QT界面开发-QAxObject 读写excel(COM组件)-常用功能封装代码
  6. 【Android】Android网络编程概述
  7. 谁是谁的first-child
  8. hdu5720_贪心
  9. [react] 使用React的memo和forwardRef包装的组件为什么提示children类型不对?
  10. php 字符组成数组,php分割字符串并返回由字符串组成的数组的函数explode()
  11. ax3000 梅林_梅林甘蔗下种忙 古法红糖“熬”成致富新产业
  12. 个人电脑 公司电脑 代理_你们想要打造的树莓派电脑,刚发布了官方版:性能更强大,只卖70美元...
  13. 消息中间件学习总结(10)——Kafka、RabbitMQ、RocketMQ消息中间件的消息发送性能对比
  14. PostgreSQL 最佳实践 - 在线增量备份与任意时间点恢复
  15. 使用QGIS将文本坐标转换为矢量文件
  16. [jzoj 4528] [GDOI2019模拟2019.3.26] 要换换名字 (最大权闭合子图)
  17. Teststand 中用labview 读写station options属性
  18. android思维导图软件推荐,好用的思维导图软件,安卓思维导图软件哪个好
  19. 感冒会引发腺样体肥大吗?
  20. html制作调色板,JS实现系统调色板

热门文章

  1. SQL Server安全(8/11):数据加密(Data Encryption)
  2. iOS强制切换横屏、竖屏
  3. 第二个spring冲刺总结
  4. 云计算与分布式系统课程学习笔记(一)——云计算简介
  5. Leetcode--5. 最长回文子串(java)
  6. linux定时器错误使用,linux下定时器的使用
  7. linux du 文件大小排序,du命令 实现Linux 某个文件夹下的文件按大小排序
  8. C语言编写一个备份文件,2014年3月二级C语言上机题库备份.doc
  9. AttributeError: module 'tensorflow' has no attribute 'FIFOQueue'
  10. Halcon算子学习:create_surface_model