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语言-为什么返回值为接口类型,却返回结构体
Apr 24 Golang
Go语言 go程释放操作(退出/销毁)
Apr 30 Golang
golang协程池模拟实现群发邮件功能
May 02 Golang
golang 实现时间戳和时间的转化
May 07 Golang
golang 实现并发求和
May 08 Golang
golang中字符串MD5生成方式总结
Jul 04 Golang
Go语言应该什么情况使用指针
Jul 25 Golang
详解Golang如何优雅的终止一个服务
Mar 21 Golang
Golang 对es的操作实例
Apr 20 Golang
GoFrame框架数据校验之校验结果Error接口对象
Jun 21 Golang
Go语言怎么使用变长参数函数
Jul 15 Golang
Go gorilla securecookie库的安装使用详解
Aug 14 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
2020显卡排行榜天梯图 显卡天梯图2020年3月最新版
2020/04/02 数码科技
基于mysql的论坛(5)
2006/10/09 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
2016/05/28 PHP
php代码检查代理ip的有效性
2016/08/19 PHP
php关联数组与索引数组及其显示方法
2018/03/12 PHP
PHP code 验证码生成类定义和简单使用示例
2020/05/27 PHP
Js 中debug方式
2010/02/07 Javascript
Js控制滑轮左右滑动实例
2015/02/13 Javascript
jQuery与getJson结合的用法实例
2015/08/07 Javascript
windows下安装nodejs及框架express
2015/08/07 NodeJs
简单纯js实现点击切换TAB标签实例
2015/08/23 Javascript
运用js教你轻松制作html音乐播放器
2020/04/17 Javascript
JS实现Ajax的方法分析
2016/12/20 Javascript
详解angularjs获取元素以及angular.element()用法
2017/07/25 Javascript
JavaScript中in和hasOwnProperty区别详解
2017/08/04 Javascript
详解在vue-cli中使用路由
2017/09/25 Javascript
基于ES6作用域和解构赋值详解
2017/11/03 Javascript
vue 实现复制内容到粘贴板clipboard的方法
2018/03/17 Javascript
基于D3.js实现时钟效果
2018/07/17 Javascript
Vue 实现分页与输入框关键字筛选功能
2020/01/02 Javascript
Js跳出两级循环方法代码实例
2020/09/22 Javascript
python解决字典中的值是列表问题的方法
2013/03/04 Python
Python兔子毒药问题实例分析
2015/03/05 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
2019/06/27 Python
Django Form 实时从数据库中获取数据的操作方法
2019/07/25 Python
Python实现FTP文件定时自动下载的步骤
2020/12/19 Python
科尔士百货公司官网:Kohl’s
2016/07/11 全球购物
与C++相比,Java中的数组有什么不同
2014/03/25 面试题
电信专业毕业生推荐信
2013/11/18 职场文书
《动手做做看》教学反思
2014/04/09 职场文书
财产公证书格式
2014/04/10 职场文书
祖国在我心中演讲稿600字
2014/05/04 职场文书
授权委托书(公民个人适用)
2014/09/19 职场文书
廉洁自律承诺书2016
2016/03/25 职场文书
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
2021/05/17 Python
Python中 range | np.arange | np.linspace三者的区别
2022/03/22 Python