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 相关文章推荐
golang 实现两个结构体复制字段
Apr 28 Golang
解决Golang time.Parse和time.Format的时区问题
Apr 29 Golang
解决Golang中goroutine执行速度的问题
May 02 Golang
使用golang编写一个并发工作队列
May 08 Golang
关于golang高并发的实现与注意事项说明
May 08 Golang
Golang 实现获取当前函数名称和文件行号等操作
May 08 Golang
Golang 语言控制并发 Goroutine的方法
Jun 30 Golang
Go语言空白表示符_的实例用法
Jul 04 Golang
Go语言并发编程 sync.Once
Oct 16 Golang
golang为什么要统一错误处理
Apr 03 Golang
golang生成并解析JSON
Apr 14 Golang
GO中sync包自由控制并发示例详解
Aug 05 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
PHP文件上传原理简单分析
2011/05/29 PHP
php简单创建zip压缩文件的方法
2016/04/30 PHP
PHP微信公众号开发之微信红包实现方法分析
2017/07/14 PHP
PDO::setAttribute讲解
2019/01/29 PHP
Yii框架核心组件类实例详解
2019/08/06 PHP
在laravel框架中使用model层的方法
2019/10/08 PHP
tp5.1 实现setInc字段自动加1
2019/10/18 PHP
javascript右下角弹层及自动隐藏(自己编写)
2013/11/20 Javascript
为开发者准备的10款最好的jQuery日历插件
2014/02/04 Javascript
不要使用jQuery触发原生事件的方法
2014/03/03 Javascript
JS基于Ajax实现的网页Loading效果代码
2015/10/27 Javascript
浅谈js中调用函数时加不加括号的问题
2016/07/28 Javascript
jQuery实现的自适应焦点图效果完整实例
2016/08/24 Javascript
js判断radiobuttonlist的选中值显示/隐藏其它模块的实现方法
2016/08/25 Javascript
JS实现的模仿QQ头像资料卡显示与隐藏效果
2017/04/07 Javascript
vue中eventbus被多次触发以及踩过的坑
2017/12/02 Javascript
web前端vue之vuex单独一文件使用方式实例详解
2018/01/11 Javascript
详解使用React进行组件库开发
2018/02/06 Javascript
ES6 迭代器与可迭代对象的实现
2019/02/11 Javascript
Nodejs技巧之Exceljs表格操作用法示例
2019/11/06 NodeJs
uniapp实现可滑动选项卡
2020/10/21 Javascript
[02:33]2018DOTA2亚洲邀请赛赛前采访——LGD
2018/04/04 DOTA
python实现根据用户输入从电影网站获取影片信息的方法
2015/04/07 Python
Python统计文件中去重后uuid个数的方法
2015/07/30 Python
VTK与Python实现机械臂三维模型可视化详解
2017/12/13 Python
Python使用Flask-SQLAlchemy连接数据库操作示例
2018/08/31 Python
用Pycharm实现鼠标滚轮控制字体大小的方法
2019/01/15 Python
python交易记录链的实现过程详解
2019/07/03 Python
JPA面试常见问题
2016/11/14 面试题
写出程序把一个链表中的接点顺序倒排
2014/04/28 面试题
北京-环亚运商测试题.net程序员初步测试题
2013/05/28 面试题
外贸业务员求职自荐信分享
2013/09/21 职场文书
学院书画协会部门岗位职责
2013/12/01 职场文书
2014年保卫部工作总结
2014/11/21 职场文书
公务员个人考察材料
2014/12/23 职场文书
商务代表岗位职责
2015/02/15 职场文书