Go 语言 switch 语句(分支判断)

更新时间 2022-03-31 15:01:54

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书活动

目前, 星球 内第一个项目:全栈前后端分离博客项目,演示地址:http://116.62.199.48/, 1.0 版本已经更新完毕,正在更新 2.0 版本。采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 187 小节,累计 29w+ 字,讲解图:1263 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 720+ 小伙伴加入,欢迎点击围观

分支判断可以理解成批量的 if 语句,使用 switch 语句可以非常方便地对大量值进行条件判断。

一、基本写法

Go 语言 改进了其他语言中 switch 语句的设计弊端。Go 语言中 switch 中的每一个 case 都是独立代码块,无需通过 break 语句跳出代码块,以避免执行到下一个 case 代码块。

PS: 如果你有其他语言的编程经验 (如 Java), 一定会对 case 代码块中的 break 语句印象深刻。

swtich 语句的基本格式如下:

num := 1

switch num {
  case 1:
  fmt.Println("1 -> 犬小哈教程 quanxiaoha.com")
  case 2:
  fmt.Println("2 -> 犬小哈教程 quanxiaoha.com")
  default:
  fmt.Println("error")
}

代码输出如下:

1 -> 犬小哈教程 quanxiaoha.com

图示:

go语言switch语句代码示例go语言switch语句代码示例

上面代码中,case整型 num 进行判断,若条件符合,则打印相应的字符串 。另外,还使用了 default 分支,default 分支表示若条件均不符合,则执行改代码块。

注意:每一个 swtich 语句中只能有一个 default 分支。

二、一分支多值

当需要多个 case 放在一起的时候,代码格式如下:

package main

import "fmt"

func main()  {
	num := 1

	switch num {
	case 1, 2:
		fmt.Println("犬小哈教程 quanxiaoha.com")
	}
}

表达式直接用逗号 , 隔开即可。

三、分支表达式

case 后面除了定义常量以外,还可以像 if 语句一样添加表达式,代码如下:

package main

import "fmt"

func main()  {
	num := 1

	switch {
	case num > 0 && num < 2:
		fmt.Println("犬小哈教程 quanxiaoha.com")
	}
}

注意: 这个时候,switch 后面不再跟判断变量,直接不写即可。

四、fallthrough 关键字 —— 兼容 C 语言的 case 设计

前面说到了 Go 语言中 swtich 语句中的 case 均为独立代码块,执行完成后,不会像 C 语言那种继续执行下一个 case

但是为了兼容一些移植代码,Go 语言加入了 fallthrough 关键字来实现这一功能。

实例代码如下:

package main

import "fmt"

func main()  {
	num := 1

	switch {
	case num > 0:
		fmt.Println("犬小哈教程 quanxiaoha.com")
		fallthrough
	case num < 2:
		fmt.Println("犬小哈教程 quanxiaoha.com")
	}
}

代码输出如下:

犬小哈教程 quanxiaoha.com
犬小哈教程 quanxiaoha.com

五、结语

本小节中,我们学习了 Go 语言的 swtich 语句(分支选择),希望大家看完后有所收获。