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 相关文章推荐
win10下go mod配置方式
Apr 25 Golang
goland 恢复已更改文件的操作
Apr 28 Golang
完美解决golang go get私有仓库的问题
May 05 Golang
Go语言设计模式之结构型模式
Jun 22 Golang
Go语言基础知识点介绍
Jul 04 Golang
go使用Gin框架利用阿里云实现短信验证码功能
Aug 04 Golang
Golang并发操作中常见的读写锁详析
Aug 30 Golang
Go语言读取txt文档的操作方法
Jan 22 Golang
如何利用golang运用mysql数据库
Mar 13 Golang
golang三种设计模式之简单工厂、方法工厂和抽象工厂
Apr 10 Golang
详解Go语言中Get/Post请求测试
Jun 01 Golang
Go 内联优化让程序员爱不释手
Jun 21 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
在普通HTTP上安全地传输密码
2007/07/21 PHP
php面向对象的方法重载两种版本比较
2008/09/08 PHP
php 获取当前访问的url文件名的方法小结
2010/02/08 PHP
php遍历数组的方法分享
2012/03/22 PHP
浅谈JavaScript中的作用域和闭包问题
2015/07/07 Javascript
JS更改select内option属性的方法
2015/10/14 Javascript
实例代码讲解jquery easyui动态tab页
2015/11/17 Javascript
浅析$.getJSON异步请求和同步请求
2016/06/06 Javascript
jQuery simpleModal插件的使用介绍
2016/08/30 Javascript
d3.js实现简单的网络拓扑图实例代码
2016/11/06 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
2016/12/14 Javascript
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
2017/06/29 Javascript
Vue组件的使用教程详解
2018/01/05 Javascript
php 解压zip压缩包内容到指定目录的实例
2018/01/23 Javascript
微信小程序表单弹窗实例
2018/07/19 Javascript
JS如何获取地址栏的参数实例讲解
2018/10/06 Javascript
javascript中call()、apply()的区别
2019/03/21 Javascript
Vue filter 过滤当前时间 实现实时更新效果
2019/12/20 Javascript
提升Python程序运行效率的6个方法
2015/03/31 Python
基于Python开发chrome插件的方法分析
2018/07/07 Python
python的turtle库使用详解
2019/05/10 Python
Python 实现交换矩阵的行示例
2019/06/26 Python
详解python路径拼接os.path.join()函数的用法
2019/10/09 Python
TensorFlow2.0矩阵与向量的加减乘实例
2020/02/07 Python
基于Python爬取51cto博客页面信息过程解析
2020/08/25 Python
pycharm-professional-2020.1下载与激活的教程
2020/09/21 Python
四方通行旅游网:台湾订房、出国旅游
2017/09/20 全球购物
Footshop乌克兰:运动鞋的最大选择
2019/12/01 全球购物
C面试题
2015/10/08 面试题
团支部建设方案
2014/05/02 职场文书
2016大学军训心得体会
2016/01/11 职场文书
2016年社区“6.26”禁毒日宣传活动总结
2016/04/05 职场文书
2019毕业论文致谢词
2019/06/24 职场文书
JavaWeb Servlet实现网页登录功能
2021/07/04 Java/Android
关于React Native使用axios进行网络请求的方法
2021/08/02 Javascript
浅谈redis的过期时间设置和过期删除机制
2022/03/18 MySQL