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中semaphore(信号量)源码
Apr 03 Golang
golang中实现给gif、png、jpeg图片添加文字水印
Apr 26 Golang
Golang 实现超大文件读取的两种方法
Apr 27 Golang
解决goland 导入项目后import里的包报红问题
May 06 Golang
解决golang 关于全局变量的坑
May 06 Golang
浅谈Go语言多态的实现与interface使用
Jun 16 Golang
golang 实用库gotable的具体使用
Jul 01 Golang
Golang 并发下的问题定位及解决方案
Mar 16 Golang
Go归并排序算法的实现方法
Apr 06 Golang
Go语言的协程上下文的几个方法和用法
Apr 11 Golang
Golang ort 中的sortInts 方法
Apr 24 Golang
基于Python实现西西成语接龙小助手
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函数之子字符串替换&amp;#65279; str_replace
2011/03/23 PHP
如何使用FireFox插件FirePHP调试PHP
2013/07/23 PHP
php根据身份证号码计算年龄的实例代码
2014/01/18 PHP
10个值得深思的PHP面试题
2016/11/14 PHP
php微信公众平台开发(三)订阅事件处理
2016/12/06 PHP
php7安装mongoDB扩展的方法分析
2017/08/02 PHP
PHP+ajax实现获取新闻数据简单示例
2018/05/08 PHP
extjs tabpanel限制选项卡数量实现思路及代码
2013/04/02 Javascript
JSON传递bool类型数据的处理方式介绍
2013/09/18 Javascript
Javascript 修改String 对象 增加去除空格功能(示例代码)
2013/11/30 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
2017/03/09 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
jquery Ajax实现Select动态添加数据
2017/06/08 jQuery
javascript+html5+css3自定义弹出窗口效果
2017/10/26 Javascript
搭建element-ui的Vue前端工程操作实例
2018/02/23 Javascript
基于jQuery实现Ajax验证用户名是否可用实例
2018/03/25 jQuery
angularjs $http调用接口的方式详解
2018/08/13 Javascript
Koa 使用小技巧(小结)
2018/10/22 Javascript
[39:19]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第二场 11.26
2020/11/30 DOTA
python 删除列表里所有空格项的方法总结
2018/04/18 Python
Django后台获取前端post上传的文件方法
2018/05/28 Python
numpy.linspace 生成等差数组的方法
2018/07/02 Python
彻彻底底地理解Python中的编码问题
2018/10/15 Python
pygame游戏之旅 游戏中添加显示文字
2018/11/20 Python
Python实现的爬取百度文库功能示例
2019/02/16 Python
详解Python循环作用域与闭包
2019/03/21 Python
Django RBAC权限管理设计过程详解
2019/08/06 Python
python实现学生成绩测评系统
2020/06/22 Python
美国知名奢侈美容品牌零售商:Cos Bar
2017/04/21 全球购物
For Art’s Sake官网:手工制作的奢华眼镜
2018/12/15 全球购物
3.12植树节活动总结2014
2014/03/13 职场文书
2014年廉洁自律承诺书
2014/05/26 职场文书
大学生求职自荐信范文
2015/03/04 职场文书
《给予树》教学反思
2016/03/03 职场文书
vue引入Excel表格插件的方法
2021/04/28 Vue.js
SpringBoot+Redis实现布隆过滤器的示例代码
2022/03/17 Java/Android