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
Go语言-为什么返回值为接口类型,却返回结构体
Apr 24 Golang
golang import自定义包方式
Apr 29 Golang
Golang 使用Map实现去重与set的功能操作
Apr 29 Golang
解决golang 关于全局变量的坑
May 06 Golang
入门学习Go的基本语法
Jul 07 Golang
K8s部署发布Golang应用程序的实现方法
Jul 16 Golang
Go语言实现Base64、Base58编码与解码
Jul 26 Golang
golang 语言中错误处理机制
Aug 30 Golang
Golang原生rpc(rpc服务端源码解读)
Apr 07 Golang
golang定时器
Apr 14 Golang
go goth封装第三方认证库示例详解
Aug 14 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/01/18 PHP
了解Joomla 这款来自国外的php网站管理系统
2010/03/11 PHP
php和javascript之间变量的传递实现代码
2012/12/19 PHP
解析MySql与Java的时间类型
2013/06/22 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
Ubuntu彻底删除PHP7.0的方法
2018/07/27 PHP
JavaScript中的document.referrer在各种浏览器测试结果
2014/07/18 Javascript
html文档中的location对象属性理解及常见的用法
2014/08/13 Javascript
Javascript基础教程之关键字和保留字汇总
2015/01/18 Javascript
JavaScript获取两个数组交集的方法
2015/06/09 Javascript
Zepto实现密码的隐藏/显示
2017/04/07 Javascript
详解JS中的attribute属性
2017/04/25 Javascript
通过nodejs 服务器读取HTML文件渲染到页面的方法
2018/05/17 NodeJs
微信小程序上传图片实例
2018/05/28 Javascript
JS实现多选框的操作
2020/06/24 Javascript
2款Python内存检测工具介绍和使用方法
2014/06/01 Python
web.py获取上传文件名的正确方法
2014/08/26 Python
python网络编程之数据传输UDP实例分析
2015/05/20 Python
Python中functools模块的常用函数解析
2016/06/30 Python
Python可变参数用法实例分析
2017/04/02 Python
python实现隐马尔科夫模型HMM
2018/03/25 Python
Django+Xadmin构建项目的方法步骤
2019/03/06 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
2019/11/19 Python
Python 读取 YUV(NV12) 视频文件实例
2019/12/09 Python
Python制作数据预测集成工具(值得收藏)
2020/08/21 Python
Python中猜拳游戏与猜筛子游戏的实现方法
2020/09/04 Python
使用HTML5的链接预取功能(link prefetching)给网站提速
2012/12/13 HTML / CSS
美国最大的农村生活方式零售店:Tractor Supply Company(TSC)
2017/05/15 全球购物
纽约服装和生活方式品牌:Saturdays NYC
2017/08/13 全球购物
DNA基因检测和分析:23andMe
2019/05/01 全球购物
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
2015/11/18 面试题
人力资源经理的岗位职责范本
2014/02/28 职场文书
学校党的群众路线教育实践活动总结材料
2014/10/30 职场文书
党员自评材料范文
2014/12/17 职场文书
python 如何用map()函数创建多线程任务
2021/04/07 Python
Nginx如何限制IP访问只允许特定域名访问
2022/07/23 Servers