go语言中fallthrough的用法说明


Posted in Golang onMay 06, 2021

fallthrough:Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行后面的case代码。

示例程序1:

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")
        fallthrough
    case false:
        fmt.Println("The integer was <= 8")
    default:
        fmt.Println("default case")
    }

输出结果:

The integer was <= 5

The integer was <= 6

The integer was <= 7

The integer was <= 8

问题:是否在switch最后一个分支使用fallthrough???

go语言中fallthrough的用法说明

有错误提示,显示:cannot fallthrough final case in switch

fallthrough不能用在switch的最后一个分支。

示例程序2:

上述示例是true、false常量进行分支判断,看如下变量示例。

s := "abcd"
    switch s[1] {
    case 'a':
        fmt.Println("The integer was <= 4")
        fallthrough
    case 'b':
        fmt.Println("The integer was <= 5")
        fallthrough
    case 'c':
        fmt.Println("The integer was <= 6")
    default:
        fmt.Println("default case")
    }

输出结果如下:

The integer was <= 5

The integer was <= 6

更改为:

s := "abcd"
    switch s[3] {
    case 'a':
        fmt.Println("The integer was <= 4")
        fallthrough
    case 'b':
        fmt.Println("The integer was <= 5")
        fallthrough
    case 'c':
        fmt.Println("The integer was <= 6")
    default:
        fmt.Println("default case")
    }

输出:

default case

总结:

switch分支中使用变量进行判断的时,fallthrough正确的分支开始其作用。

补充:【踩坑】golang的fallthrough大坑

加了fallthrough后,会直接运行【紧跟的后一个】case或default语句,不论条件是否满足都会执行,后面的条件并不会再判断了,?

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Golang 相关文章推荐
基于go interface{}==nil 的几种坑及原理分析
Apr 24 Golang
golang中的空slice案例
Apr 27 Golang
golang 如何通过反射创建新对象
Apr 28 Golang
Golang 空map和未初始化map的注意事项说明
Apr 29 Golang
解决golang在import自己的包报错的问题
Apr 29 Golang
go类型转换及与C的类型转换方式
May 05 Golang
golang 实现并发求和
May 08 Golang
golang 实用库gotable的具体使用
Jul 01 Golang
golang连接MySQl使用sqlx库
Apr 14 Golang
Go调用Rust方法及外部函数接口前置
Jun 14 Golang
Go Grpc Gateway兼容HTTP协议文档自动生成网关
Jun 16 Golang
Go语言测试库testify使用学习
Jul 23 Golang
Golang之sync.Pool使用详解
May 06 #Golang
Golang 编译成DLL文件的操作
May 06 #Golang
完美解决golang go get私有仓库的问题
May 05 #Golang
golang gopm get -g -v 无法获取第三方库的解决方案
May 05 #Golang
go类型转换及与C的类型转换方式
May 05 #Golang
Golang: 内建容器的用法
May 05 #Golang
Go标准容器之Ring的使用说明
May 05 #Golang
You might like
IIS下配置Php+Mysql+zend的图文教程
2006/12/08 PHP
smarty 缓存控制前的页面静态化原理
2013/03/15 PHP
浅谈PHP强制类型转换,慎用!
2013/06/06 PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
2016/06/28 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
2017/06/10 PHP
载入进度条 效果
2006/07/08 Javascript
JavaScript实现为input与textarea自定义hover,focus效果的方法
2015/08/21 Javascript
javascript面向对象程序设计高级特性经典教程(值得收藏)
2016/05/19 Javascript
jstree创建无限分级树的方法【基于ajax动态创建子节点】
2016/10/25 Javascript
JavaScript组成、引入、输出、运算符基础知识讲解
2016/12/08 Javascript
微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解
2016/12/08 Javascript
vue2实现可复用的轮播图carousel组件详解
2017/11/27 Javascript
微信小程序全局变量GLOBALDATA的定义和调用过程解析
2019/09/23 Javascript
jquery中attr、prop、data区别与用法分析
2019/09/25 jQuery
jQuery轮播图功能制作方法详解
2019/12/03 jQuery
解决element-ui里的下拉多选框 el-select 时,默认值不可删除问题
2020/08/14 Javascript
实例讲解Python中SocketServer模块处理网络请求的用法
2016/06/28 Python
Python实现加载及解析properties配置文件的方法
2018/03/29 Python
pygame实现俄罗斯方块游戏
2018/06/26 Python
Python读取excel指定列生成指定sql脚本的方法
2018/11/28 Python
python flask解析json数据不完整的解决方法
2019/05/26 Python
Numpy对数组的操作:创建、变形(升降维等)、计算、取值、复制、分割、合并
2019/08/28 Python
在jupyter notebook 添加 conda 环境的操作详解
2020/04/10 Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
2020/09/25 Python
Python从MySQL数据库中面抽取试题,生成试卷
2021/01/14 Python
pandas针对excel处理的实现
2021/01/15 Python
python 基于opencv去除图片阴影
2021/01/26 Python
python 实现IP子网计算
2021/02/18 Python
外语专业毕业生个人的自荐信
2013/11/19 职场文书
小学生母亲节演讲稿
2014/05/07 职场文书
公安机关查摆剖析材料
2014/10/10 职场文书
2014年镇党建工作汇报材料
2014/11/02 职场文书
《夸父追日》教学反思
2016/02/20 职场文书
小学科学课教学反思
2016/02/23 职场文书
四年级语文教学反思
2016/03/03 职场文书
win10识别不了U盘怎么办 win10系统读取U盘失败的解决办法
2022/08/05 数码科技