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语言-在mac下brew升级golang
Apr 25 Golang
go结构体嵌套的切片数组操作
Apr 28 Golang
go设置多个GOPATH的方式
May 05 Golang
go类型转换及与C的类型转换方式
May 05 Golang
Golang中异常处理机制详解
Jun 08 Golang
Go Plugins插件的实现方式
Aug 07 Golang
Golang 并发下的问题定位及解决方案
Mar 16 Golang
golang实现浏览器导出excel文件功能
Mar 25 Golang
golang的文件创建及读写操作
Apr 14 Golang
Golang 对es的操作实例
Apr 20 Golang
Golang 入门 之url 包
May 04 Golang
Go Grpc Gateway兼容HTTP协议文档自动生成网关
Jun 16 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
BBS(php &amp; mysql)完整版(七)
2006/10/09 PHP
相对路径转化成绝对路径
2007/04/10 PHP
查找mysql字段中固定字符串并替换的几个方法
2012/09/23 PHP
Opcache导致php-fpm崩溃nginx返回502
2015/03/02 PHP
Zend Framework前端控制器用法示例
2016/12/11 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
2017/02/17 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
js chrome浏览器判断代码
2010/03/28 Javascript
jQuery中after的两种用法实例
2013/07/03 Javascript
jquery动态改变onclick属性导致失效的问题解决方法
2013/12/04 Javascript
javascript break指定标签打破多层循环示例
2014/01/20 Javascript
Javascript验证上传图片大小[前台处理]
2014/07/18 Javascript
JQuery操作元素的css样式
2015/03/09 Javascript
JavaScript让网页出现渐隐渐显背景颜色的方法
2015/04/21 Javascript
JavaScript函数的调用以及参数传递
2015/10/21 Javascript
简单的jQuery banner图片轮播实例代码
2016/03/04 Javascript
JavaScript绑定事件监听函数的通用方法
2016/05/14 Javascript
微信小程序实现列表下拉刷新上拉加载
2020/07/29 Javascript
深入浅析Vue全局组件与局部组件的区别
2018/06/15 Javascript
在Vue中使用axios请求拦截的实现方法
2018/10/25 Javascript
使用 Opentype.js 生成字体子集的实例代码详解
2020/05/25 Javascript
对numpy中的transpose和swapaxes函数详解
2018/08/02 Python
在Python文件中指定Python解释器的方法
2019/02/18 Python
Ubuntu18.04下python版本完美切换的解决方法
2019/06/14 Python
Flask-WTF表单的使用方法
2019/07/12 Python
python 使用事件对象asyncio.Event来同步协程的操作
2020/05/04 Python
Django Form设置文本框为readonly操作
2020/07/03 Python
pycharm 2020.2.4 pip install Flask 报错 Error:Non-zero exit code的问题
2020/12/04 Python
Sunglasses Shop英国:欧洲领先的太阳镜在线供应商之一
2018/09/19 全球购物
MIXIT官网:俄罗斯最大的化妆品公司之一
2020/01/25 全球购物
母亲80寿诞答谢词
2014/01/16 职场文书
财务主管自我鉴定
2014/01/17 职场文书
2014春晚主持词
2014/03/25 职场文书
2014党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
MySQL Shell的介绍以及安装
2021/04/24 MySQL
JavaWeb Servlet实现网页登录功能
2021/07/04 Java/Android