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 接口嵌套实现复用的操作
Apr 29 Golang
golang slice元素去重操作
Apr 30 Golang
Golang全局变量加锁的问题解决
May 08 Golang
Golang 获取文件md5校验的方法以及效率对比
May 08 Golang
Go语言实现Snowflake雪花算法
Jun 08 Golang
浅谈Go语言多态的实现与interface使用
Jun 16 Golang
K8s部署发布Golang应用程序的实现方法
Jul 16 Golang
Golang 1.18 多模块Multi-Module工作区模式的新特性
Apr 11 Golang
Golang流模式之grpc的四种数据流
Apr 13 Golang
Golang 结构体数据集合
Apr 22 Golang
Golang 实现WebSockets
Apr 24 Golang
Golang gRPC 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
在命令行下运行PHP脚本[带参数]的方法
2010/01/22 PHP
php实现将base64格式图片保存在指定目录的方法
2016/10/13 PHP
PHP生成腾讯云COS接口需要的请求签名
2018/05/20 PHP
PHP中ltrim()函数的用法与实例讲解
2019/03/28 PHP
用js实现的一个Flash滚动轮换显示图片代码生成器
2007/03/14 Javascript
js 表单验证方法(实用)
2009/04/28 Javascript
javascript动画浅析
2012/08/30 Javascript
js实现的map方法示例代码
2014/01/13 Javascript
基于jquery实现的自动补全功能
2015/03/12 Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
2015/06/05 Javascript
JS实现Fisheye效果动感放大菜单代码
2015/10/21 Javascript
window.location.hash知识汇总
2015/11/09 Javascript
JS组件Bootstrap Table布局详解
2016/05/27 Javascript
深入学习Bootstrap表单
2016/12/13 Javascript
关于bootstrap日期转化,bootstrap-editable的简单使用,bootstrap-fileinput的使用详解
2017/05/12 Javascript
JavaScript设计模式之代理模式详解
2017/06/09 Javascript
Vue+Element实现动态生成新表单并添加验证功能
2019/05/23 Javascript
vue使用原生swiper代码实例
2020/02/05 Javascript
JS实现省市县三级下拉联动
2020/04/10 Javascript
js根据后缀判断文件文件类型的代码
2020/05/09 Javascript
web.py中调用文件夹内模板的方法
2014/08/26 Python
详解Python之数据序列化(json、pickle、shelve)
2017/03/30 Python
Python新手入门最容易犯的错误总结
2017/04/24 Python
使用python 和 lint 删除项目无用资源的方法
2017/12/20 Python
windows10下python3.5 pip3安装图文教程
2018/04/02 Python
如何利用Anaconda配置简单的Python环境
2019/06/24 Python
python多线程+代理池爬取天天基金网、股票数据过程解析
2019/08/13 Python
python创建文本文件的简单方法
2020/08/30 Python
美国瑜伽服装和装备购物网站:Mukha Yoga
2019/02/22 全球购物
内容编辑个人求职信
2013/12/10 职场文书
积极贯彻学习两会精神总结
2014/03/17 职场文书
学习优秀共产党员先进事迹思想报告
2014/09/17 职场文书
毕业生爱心捐书倡议书
2015/04/27 职场文书
世界十大儿童漫画书排名,法国国宝漫画排第五,第二是轰动日本连环
2022/03/18 欧美动漫
MYSQL如何查看操作日志详解
2022/05/30 MySQL