Go语言switch case语句
2023-06-13 09:19:41 时间
Go语言的 switch 要比C语言的更加通用,表达式不需要为常量,甚至不需要为整数,case 按照从上到下的顺序进行求值,直到找到匹配的项,如果 switch 没有表达式,则对 true 进行匹配,因此,可以将 if else-if else 改写成一个 switch。
相对于C语言和 Java 等其它语言来说,Go语言中的 switch 结构使用上更加灵活,语法设计尽量以使用方便为主。
基本写法
Go语言改进了 switch 的语法设计,case 与 case 之间是独立的代码块,不需要通过 break 语句跳出当前 case 代码块以避免执行到下一行,示例代码如下:
var a = "hello" switch a { case "hello": fmt.Println(1) case "world": fmt.Println(2) default: fmt.Println(0) }
代码输出如下:
1
上面例子中,每一个 case 均是字符串格式,且使用了 default 分支,Go语言规定每个 switch 只能有一个 default 分支。
1) 一分支多值
当出现多个 case 要放在一起的时候,可以写成下面这样:
var a = "mum" switch a { case "mum", "daddy": fmt.Println("family") }
不同的 case 表达式使用逗号分隔。
2) 分支表达式
case 后不仅仅只是常量,还可以和 if 一样添加表达式,代码如下:
var r int = 11 switch { case r > 10 && r < 20: fmt.Println(r) }
注意,这种情况的 switch 后面不再需要跟判断变量。
跨越 case 的 fallthrough——兼容C语言的 case 设计
在Go语言中 case 是一个独立的代码块,执行完毕后不会像C语言那样紧接着执行下一个 case,但是为了兼容一些移植代码,依然加入了 fallthrough 关键字来实现这一功能,代码如下:
var s = "hello" switch { case s == "hello": fmt.Println("hello") fallthrough case s != "world": fmt.Println("world") }
代码输出如下:
hello
world
新编写的代码,不建议使用 fallthrough。
相关文章
- Golang(go语言)开发环境配置
- 2.Go语言之文件操作学习记录.md
- 2022-12-31:以下go语言代码输出什么?A:1 1;B:-1 1;C:-1 -1;D:编译错误。 package main import “fmt“ f
- 2023-04-15:ffmpeg的filter_audio.c的功能是生成一个正弦波音频,然后通过简单的滤镜链,最后输出数据的MD5校验和。请用go语言改写。
- Go语言go mod包依赖管理工具使用详解
- Go语言reflect.Elem()——通过反射获取指针指向的元素类型
- Go语言tar归档文件的读写操作
- Go从入门到精通(一)go语言初识详解编程语言
- go语言圣经-获取URL练习题详解编程语言
- go语言的并发详解编程语言
- go语言之goto语句和函数和defer语句详解编程语言
- Amazon Go 又添新伙伴,松下电器推出自动收银台(附视频)
- Go语言环境配置:在 Linux 下实现(go环境搭建linux)
- Go语言与Linux:全新的开发环境体验(go语言linux)
- 部署Go语言快速连接Oracle实现轻松部署(go连接oracle简单)
- Go语言查询Oracle数据库实战实例(go语言查询oracle)
- Go语言快速安装Oracle数据库(go语言安装oracle)
- Go语言操作Oracle数据库技术实践(go操作oracle)
- 数据库Go语言连接Oracle数据库的指南(go如何连接oracle)
- 程序Go语言调用Oracle数据库驱动程序指南(go oracle驱动)
- 语句使用Oracle中的Go语句来简化编程(oracle中go)
- GO语言基本类型分析