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 29 Golang
golang import自定义包方式
Apr 29 Golang
golang 在windows中设置环境变量的操作
Apr 29 Golang
对Golang中的FORM相关字段理解
May 02 Golang
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
May 05 Golang
go类型转换及与C的类型转换方式
May 05 Golang
Go语言基础map用法及示例详解
Nov 17 Golang
golang为什么要统一错误处理
Apr 03 Golang
golang三种设计模式之简单工厂、方法工厂和抽象工厂
Apr 10 Golang
Golang 链表的学习和使用
Apr 19 Golang
Go获取两个时区的时间差
Apr 20 Golang
Golang 实现 WebSockets 之创建 WebSockets
Apr 24 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 验证图片生成函数
2009/05/21 PHP
php遍历目录输出目录及其下的所有文件示例
2014/01/27 PHP
php一行代码获取文件后缀名实例分析
2014/11/12 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
2016/07/13 PHP
浅谈Laravel中的一个后期静态绑定
2017/08/11 PHP
利用ASP发送和接收XML数据的处理方法与代码
2007/11/13 Javascript
基于jquery的气泡提示效果
2010/05/31 Javascript
Jquery图片滚动与幻灯片的实例代码
2013/04/08 Javascript
jquery插件jTimer(jquery定时器)使用方法
2013/12/23 Javascript
js中for in的用法示例解析
2013/12/25 Javascript
js创建一个input数组并绑定click事件的方法
2014/06/12 Javascript
JavaScript获取按钮所在form表单id的方法
2015/04/02 Javascript
JQuery 两种方法解决刚创建的元素遍历不到的问题
2016/04/13 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
浅谈js中的三种继承方式及其优缺点
2016/08/10 Javascript
angularjs实现首页轮播图效果
2017/04/14 Javascript
bootstrap表单示例代码分享
2017/05/18 Javascript
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
2018/02/08 Javascript
vue新vue-cli3环境配置和模拟json数据的实例
2018/09/19 Javascript
微信小程序下拉框组件使用方法详解
2018/12/28 Javascript
用Fundebug插件记录网络请求异常的方法
2019/02/21 Javascript
解决layui调用自定义方法提示未定义的问题
2019/09/14 Javascript
vue的路由映射问题及解决方案
2019/10/14 Javascript
JS删除数组指定值常用方法详解
2020/06/04 Javascript
Python手机号码归属地查询代码
2016/05/04 Python
Django基础之Model操作步骤(介绍)
2017/05/27 Python
matplotlib设置legend图例代码示例
2017/12/19 Python
python 删除指定时间间隔之前的文件实例
2018/04/24 Python
python print出共轭复数的方法详解
2019/06/25 Python
Python中顺序表原理与实现方法详解
2019/12/03 Python
如何解决python多种版本冲突问题
2020/10/13 Python
详解canvas绘图时遇到的跨域问题
2018/03/22 HTML / CSS
手工制作的男士奢华英国鞋和服装之家:Goodwin Smith
2019/06/21 全球购物
Vans(范斯)新西兰官方网站:美国原创极限运动品牌
2020/09/19 全球购物
社区端午节活动方案
2014/01/28 职场文书
2016高考寄语集锦
2015/12/04 职场文书