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中的FORM相关字段理解
May 02 Golang
golang elasticsearch Client的使用详解
May 05 Golang
Golang之sync.Pool使用详解
May 06 Golang
go mod 安装依赖 unkown revision问题的解决方案
May 06 Golang
基于Golang 高并发问题的解决方案
May 08 Golang
golang 实现并发求和
May 08 Golang
K8s部署发布Golang应用程序的实现方法
Jul 16 Golang
Go 中的空白标识符下划线
Mar 25 Golang
golang定时器
Apr 14 Golang
Golang日志包的使用
Apr 20 Golang
详解Go语言中配置文件使用与日志配置
Jun 01 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
WordPress中邮件的一些修改和自定义技巧
2015/12/15 PHP
Json_encode防止汉字转义成unicode的方法
2016/02/25 PHP
php微信开发之带参数二维码的使用
2016/08/03 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
2016/12/29 PHP
如何让PHP编码更加好看利于阅读
2019/05/12 PHP
jquery 多行滚动代码(附详细解释)
2010/06/17 Javascript
javascript tips提示框组件实现代码
2010/11/19 Javascript
jquery 缓存问题的几个解决方法
2013/11/11 Javascript
JS替换字符串中字符即替换全部而不是第一个
2014/06/04 Javascript
jQuery实现统计输入文字个数的方法
2015/03/11 Javascript
基于jQuery的ajax方法封装
2016/07/14 Javascript
JS仿百度自动下拉框模糊匹配提示
2016/07/25 Javascript
url传递的参数值中包含&amp;时,url自动截断问题的解决方法
2016/08/02 Javascript
javascript比较语义化版本号的实现代码
2016/09/09 Javascript
js常见遍历操作小结
2019/06/06 Javascript
使用ThinkJs搭建微信中控服务的实现方法
2019/08/08 Javascript
node.js中npm包管理工具用法分析
2020/02/14 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
2021/01/18 Javascript
Python 中的 else详解
2016/04/23 Python
解决python selenium3启动不了firefox的问题
2018/10/13 Python
Django REST framework 如何实现内置访问频率控制
2019/07/23 Python
Python selenium的基本使用方法分析
2019/12/21 Python
python编写实现抽奖器
2020/09/10 Python
Python grpc超时机制代码示例
2020/09/14 Python
python中str内置函数用法总结
2020/12/27 Python
使用CSS3制作一个简单的Chrome模拟器
2015/07/15 HTML / CSS
美国在线工具商店:Acme Tools
2018/06/26 全球购物
台湾全方位线上课程与职能学习平台:TibaMe
2019/12/04 全球购物
C# .NET面试题
2015/11/28 面试题
设计大赛策划方案
2014/06/13 职场文书
房地产销售主管岗位职责
2015/02/13 职场文书
初中体育课教学反思
2016/02/16 职场文书
jupyter notebook保存文件默认路径更改方法汇总(亲测可以)
2021/06/09 Python
Python人工智能之混合高斯模型运动目标检测详解分析
2021/11/07 Python
nginx.conf配置文件结构小结
2022/04/08 Servers
SpringBoot详解自定义Stater的应用
2022/07/15 Java/Android