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 Gin实现文件上传下载的示例代码
Apr 02 Golang
golang 实现两个结构体复制字段
Apr 28 Golang
Golang 使用Map实现去重与set的功能操作
Apr 29 Golang
对Golang中的FORM相关字段理解
May 02 Golang
解决golang结构体tag编译错误的问题
May 02 Golang
完美解决golang go get私有仓库的问题
May 05 Golang
go mod 安装依赖 unkown revision问题的解决方案
May 06 Golang
Golang 实现获取当前函数名称和文件行号等操作
May 08 Golang
基于Go语言构建RESTful API服务
Jul 25 Golang
Go语言基础map用法及示例详解
Nov 17 Golang
Go并发4种方法简明讲解
Apr 06 Golang
Go语言测试库testify使用学习
Jul 23 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性能优化分析工具XDebug 大型网站调试工具
2011/05/22 PHP
php在window iis的莫名问题的测试方法
2013/05/14 PHP
全面解析PHP操作Memcache基本函数
2016/07/14 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
jQuery boxy弹出层插件中文演示及使用讲解
2011/02/24 Javascript
JavaScript 函数replace深入了解
2013/03/14 Javascript
用jquery修复在iframe下的页面锚点失效问题
2014/08/22 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
JS实现浏览器状态栏文字闪烁效果的方法
2015/10/27 Javascript
深入浅析JavaScript中的作用域和上下文
2016/03/26 Javascript
JavaScript中Form表单技术汇总(推荐)
2016/06/26 Javascript
关于JS 预解释的相关理解
2016/06/28 Javascript
jQuery实现移动端手机商城购物车功能
2016/09/24 Javascript
BootStrap轮播HTML代码(推荐)
2016/12/10 Javascript
Vue2.0使用过程常见的一些问题总结学习
2017/04/10 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
2017/06/08 Javascript
解决Angular.js中使用Swiper插件不能滑动的问题
2018/02/26 Javascript
Vue中props的使用详解
2018/06/15 Javascript
详解Vue-axios 设置请求头问题
2018/12/06 Javascript
js中Array对象的常用遍历方法详解
2019/01/17 Javascript
一个小时快速搭建微信小程序的方法步骤
2019/04/15 Javascript
详解vue-cli中使用rem,vue自适应
2019/05/06 Javascript
[45:44]完美世界DOTA2联赛PWL S2 FTD vs PXG 第一场 11.27
2020/12/01 DOTA
全面了解python字符串和字典
2016/07/07 Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
2018/01/16 Python
解决python线程卡死的问题
2019/02/18 Python
python 实现快速生成连续、随机字母列表
2019/11/28 Python
Python中bisect的使用方法
2019/12/31 Python
Python过滤序列元素的方法
2020/07/31 Python
利用Python实现学生信息管理系统的完整实例
2020/12/30 Python
JPA面试常见问题
2016/11/14 面试题
浅谈react路由传参的几种方式
2021/03/23 Javascript
中秋节主持词
2014/04/02 职场文书
解除劳动合同证明书
2014/09/26 职场文书
教师反邪教心得体会
2016/01/15 职场文书
MySQL 数据类型详情
2021/11/11 MySQL