(转)Go语言switch语句和fallthrough用途
Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行后面
的case代码:
示例1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | package main import "fmt" func main() { num := 3 switch num { case 1: fmt.Println( "按下的是1楼" ) case 2: fmt.Println( "按下的是2楼" ) case 3: fmt.Println( "按下的是3楼" ) case 4: fmt.Println( "按下的是4楼" ) } } |
#执行结果
1 | 按下的是3楼 |
示例2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | package main import "fmt" func main() { num := 5 switch num { case 1: fmt.Println( "按下的是1楼" ) //break //go语言保留了break关键字,跳出switch语言,不写,默认就包含了。 case 2: fmt.Println( "按下的是2楼" ) case 3: fmt.Println( "按下的是3楼" ) case 4: fmt.Println( "按下的是4楼" ) default : fmt.Println( "按下的是xxx楼" ) } } |
#执行结果
1 | 按下的是xxx楼 |
示例3: 需要输入按下的楼层
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | package main import "fmt" func main() { var num int fmt.Printf( "请按下楼层:" ) fmt.Scan(&num) switch num { case 1: fmt.Println( "按下的是1楼" ) case 2: fmt.Println( "按下的是2楼" ) case 3: fmt.Println( "按下的是3楼" ) case 4: fmt.Println( "按下的是4楼" ) default : fmt.Println( "按下的是xxx楼" ) } } |
#执行结果:
1 2 | 请按下楼层:2 #输入2 按下的是2楼 |
用途:fallthrough //不跳出switch语句,后面的无条件执行
示例4:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | package main import "fmt" func main() { var num int fmt.Printf( "请按下楼层:" ) fmt.Scan(&num) switch num { case 1: fmt.Println( "按下的是1楼" ) fallthrough //不跳出switch语句,后面的无条件执行 case 2: fmt.Println( "按下的是2楼" ) fallthrough case 3: fmt.Println( "按下的是3楼" ) fallthrough case 4: fmt.Println( "按下的是4楼" ) fallthrough default : fmt.Println( "按下的是xxx楼" ) } } |
#执行结果
1 2 3 4 5 6 | 请按下楼层:1 按下的是1楼 按下的是2楼 按下的是3楼 按下的是4楼 按下的是xxx楼 |
示例5: (推荐用法)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | package main import "fmt" func main() { switch num := 1; num { case 1: fmt.Println( "按下的是1楼" ) case 2: fmt.Println( "按下的是2楼" ) case 3: fmt.Println( "按下的是3楼" ) case 4: fmt.Println( "按下的是4楼" ) default : fmt.Println( "按下的是xxx楼" ) } } |
#执行结果:
1 | 按下的是1楼 |
示例6: case 后面接数字,可以写多个
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | package main //必须有一个main包 import "fmt" func main() { //支持一个初始化语句, 初始化语句和变量本身, 以分号分隔 switch num := 4; num { //switch后面写的是变量本身 case 1: fmt.Println( "按下的是1楼" ) case 2: fmt.Println( "按下的是2楼" ) case 3, 4, 5: fmt.Println( "按下的是yyy楼" ) case 6: fmt.Println( "按下的是4楼" ) default : fmt.Println( "按下的是xxx楼" ) } } |
#执行结果:
1 | 按下的是yyy楼 |
示例7:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | package main import "fmt" func main() { score := 85 switch { case score > 90: //case后面可以放条件 fmt.Println( "优秀" ) case score > 80: fmt.Println( "良好" ) case score > 70: fmt.Println( "一般" ) default : fmt.Println( "其它" ) } } |
#执行结果:
良好
转自:https://www.cnblogs.com/nulige/p/10202141.html
分类:
Golang
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2016-04-12 hibernate一对多注解