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 02 Golang
一文读懂go中semaphore(信号量)源码
Apr 03 Golang
golang中切片copy复制和等号复制的区别介绍
Apr 27 Golang
golang slice元素去重操作
Apr 30 Golang
解决go在函数退出后子协程的退出问题
Apr 30 Golang
Golang全局变量加锁的问题解决
May 08 Golang
聊聊golang中多个defer的执行顺序
May 08 Golang
详解Go语言Slice作为函数参数的使用
Jul 02 Golang
基于Go语言构建RESTful API服务
Jul 25 Golang
GO语言异常处理分析 err接口及defer延迟
Apr 14 Golang
在ubuntu下安装go开发环境的全过程
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
ThinkPHP内置jsonRPC的缺陷分析
2014/12/18 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
2015/06/19 PHP
php中引用&amp;的用法分析【变量引用,函数引用,对象引用】
2016/12/12 PHP
Yii2 队列 shmilyzxt/yii2-queue 简单概述
2017/08/02 PHP
TP5框架请求响应参数实例分析
2019/10/17 PHP
javascript的事件描述
2006/09/08 Javascript
javascript中的作用域和上下文使用简要概述
2013/12/05 Javascript
js Array操作的最简短最容易理解方法
2013/12/09 Javascript
js实现通用的微信分享组件示例
2014/03/10 Javascript
JavaScript 匿名函数和闭包介绍
2015/04/13 Javascript
ECMAScript6中Set/WeakSet详解
2015/06/12 Javascript
jquery实现可自动收缩的TAB网页选项卡代码
2015/09/06 Javascript
js验证身份证号有效性并提示对应信息
2015/10/19 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
快速移动鼠标触发问题及解决方法(ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave)
2016/08/29 Javascript
AngularJS实现树形结构(ztree)菜单示例代码
2016/09/18 Javascript
利用jQuery实现滑动开关按钮效果(附demo源码下载)
2017/02/07 Javascript
轻松学习Javascript闭包
2017/03/01 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
利用Dectorator分模块存储Vuex状态的实现
2019/02/05 Javascript
Vue从TodoList中学父子组件通信
2019/02/05 Javascript
vue element upload组件 file-list的动态绑定实现
2019/10/11 Javascript
python正则表达式去掉数字中的逗号(python正则匹配逗号)
2013/12/25 Python
Python开发WebService系列教程之REST,web.py,eurasia,Django
2014/06/30 Python
python基于phantomjs实现导入图片
2016/05/13 Python
python使用sqlite3时游标使用方法
2018/03/13 Python
selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)
2018/11/29 Python
Python实现的简单线性回归算法实例分析
2018/12/26 Python
Python多项式回归的实现方法
2019/03/11 Python
使用python的pyplot绘制函数实例
2020/02/13 Python
python实现简单俄罗斯方块
2020/03/13 Python
python简单实现插入排序实例代码
2020/12/16 Python
浅谈HTML5 defer和async的区别
2016/06/07 HTML / CSS
Under Armour美国官网:美国知名高端功能性运动品牌
2016/09/05 全球购物
授权委托书范本
2014/04/03 职场文书
小学生操行评语大全
2014/04/22 职场文书