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:垃圾回收GC触发条件详解
Apr 24 Golang
Golang 实现超大文件读取的两种方法
Apr 27 Golang
golang在GRPC中设置client的超时时间
Apr 27 Golang
Go语言 go程释放操作(退出/销毁)
Apr 30 Golang
golang协程池模拟实现群发邮件功能
May 02 Golang
go语言中GOPATH GOROOT的作用和设置方式
May 05 Golang
goland 设置project gopath的操作
May 06 Golang
浅谈Golang 切片(slice)扩容机制的原理
Jun 09 Golang
go语言使用Casbin实现角色的权限控制
Jun 26 Golang
Golang表示枚举类型的详细讲解
Sep 04 Golang
Go语言 详解net的tcp服务
Apr 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
php 操作数组(合并,拆分,追加,查找,删除等)
2012/07/20 PHP
输入值/表单提交参数过滤有效防止sql注入的方法
2013/12/25 PHP
jQuery在vs2008及js文件中的无智能提示的解决方法
2010/12/30 Javascript
jQuery中insertBefore()方法用法实例
2015/01/08 Javascript
director.js实现前端路由使用实例
2015/02/03 Javascript
JavaScript面对国际化编程时的一些建议
2015/06/24 Javascript
JavaScript实现同时调用多个函数的方法
2015/11/09 Javascript
Js实现简单的小球运动特效
2016/02/18 Javascript
jquery ajax结合thinkphp的getjson实现跨域的方法
2016/06/06 Javascript
jQuery扩展实现text提示还能输入多少字节的方法
2016/11/28 Javascript
javascript获取以及设置光标位置
2017/02/16 Javascript
vue-cli+webpack记事本项目创建
2017/04/01 Javascript
五步轻松实现zTree的使用
2017/11/01 Javascript
微信小程序wx.uploadfile 本地文件转base64的实现代码
2018/06/28 Javascript
vue.js单文件组件中非父子组件的传值实例
2018/09/13 Javascript
了解Javascript中函数作为对象的魅力
2019/06/19 Javascript
解决layer.msg 不居中 ifram中的问题
2019/09/05 Javascript
JavaScript鼠标悬停事件用法解析
2020/05/15 Javascript
JS中的继承操作实例总结
2020/06/06 Javascript
react中hook介绍以及使用教程
2020/12/11 Javascript
python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
2013/12/06 Python
深入分析python数据挖掘 Json结构分析
2018/04/21 Python
python pygame实现2048游戏
2018/11/20 Python
Django REST framework 视图和路由详解
2019/07/19 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
2020/02/29 Python
pandas dataframe 中的explode函数用法详解
2020/05/18 Python
CSS3制作翻转效果_动力节点Java学院整理
2017/07/11 HTML / CSS
任意一块网页内容实现“活”的背景(目前火狐浏览器专有)
2014/05/07 HTML / CSS
意大利顶级奢侈品电商:LUISAVIAROMA(支持中文)
2020/05/26 全球购物
应届毕业生的自我鉴定
2013/11/13 职场文书
会计专业个人求职信范文
2014/01/08 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
学雷锋献爱心倡议书
2015/04/27 职场文书
SQL Server连接查询的实用教程
2021/04/07 SQL Server
Python 读写 Matlab Mat 格式数据的操作
2021/05/19 Python
使用Mysql计算地址的经纬度距离和实时位置信息
2022/04/29 MySQL