Go语言switch语句的用法(非常详细,附带实例)
Go 语言中的条件判断语句主要包括两种,第一种是 if 语句,第二种是 switch 语句。
switch 是典型的多条件分支语句,与 if else if else 语句基本相同,但 switch 语句比 if else if else 语句更具有可读性,它可以根据一个变量的值选择不同的分支执行。switch 语句允许在找不到匹配条件时执行一组默认语句。
switch 语句有 3 种使用形式,语法格式分别如下:
switch 关键字后设置了变量的执行流程如下图所示:

图 1 switch关键字后设置了变量的执行流程
switch 关键字后面未设置变量的执行流程如下图所示:

图 2 switch关键字后面未设置变量的执行流程
switch 语句比较常见的应用是从多个 case 中找到和变量匹配的值,从而执行对应的语句。下面通过示例来了解 switch 语句几种不同形式的用法。
【实例 1】输出贴心提醒警句。将“今天是星期几”定义在变量中,根据“今天是星期几”输出不同的贴心提醒警句。代码如下:
在例 1 中,将变量的赋值放在 switch 关键字后面,将代码中的“switch weekday”修改为“switch weekday := "星期六";weekday”即可。
在设置变量的匹配项时,还可以在 case 后面设置多个值,多个值之间用逗号分隔。
【实例 2】判断当前季节。使用 switch 语句判断当前月份属于哪个季节,代码如下:
当 switch 关键字后未设置变量时,case 后面必须是一个包含运算符的表达式,用于对已经声明的变量进行条件判断。
【实例 3】输出考试成绩对应的等级。将某学校的学生成绩转化为不同等级,划分标准如下:
假设某学生的考试成绩是 66 分,输出该成绩对应的等级。代码如下:
在默认情况下,当程序执行某个 case 语句之后,不会再向下执行其他 case 语句,而是直接跳出整个 switch 语句。要想继续执行下一个 case 语句,可以在 case 语句中加入 fallthrough 关键字。
示例代码如下:
switch 是典型的多条件分支语句,与 if else if else 语句基本相同,但 switch 语句比 if else if else 语句更具有可读性,它可以根据一个变量的值选择不同的分支执行。switch 语句允许在找不到匹配条件时执行一组默认语句。
switch 语句有 3 种使用形式,语法格式分别如下:
//形式1 switch 变量 { case 值1: 语句1 case 值2: 语句2 ... default: 语句n } //形式2 switch 定义变量; 变量 { case 值1: 语句1 case 值2: 语句2 ... default: 语句n } //形式3 switch { case 表达式1: 语句1 case 表达式2: 语句2 ... default: 语句n }语法格式说明如下:
- switch 后面可以根据需要决定是否设置变量;
- switch 语句中可以有多个 case 语句,但只能有一个 default 语句;
- case 后面的值或表达式用来设置变量的匹配项或判断条件。case 语句从上到下按顺序执行,如果匹配成功或条件成立,则执行对应的语句,执行后直接跳出整个 switch 语句。
switch 关键字后设置了变量的执行流程如下图所示:

图 1 switch关键字后设置了变量的执行流程
switch 关键字后面未设置变量的执行流程如下图所示:

图 2 switch关键字后面未设置变量的执行流程
switch 语句比较常见的应用是从多个 case 中找到和变量匹配的值,从而执行对应的语句。下面通过示例来了解 switch 语句几种不同形式的用法。
【实例 1】输出贴心提醒警句。将“今天是星期几”定义在变量中,根据“今天是星期几”输出不同的贴心提醒警句。代码如下:
package main import "fmt" func main(){ weekday := "星期六" switch weekday { case "星期一": fmt.Println("今天是星期一,新的一周开始了。") case "星期二": fmt.Println("今天是星期二,保持昨天的好状态,继续努力!") case "星期三": fmt.Println("今天是星期三,真快啊,过去1/2周了。") case "星期四": fmt.Println("今天是星期四,继续加油!") case "星期五": fmt.Println("今天是星期五,好好想想明天去哪里玩。") default: fmt.Println("今天是周末,可以好好放松一下了。") } }运行结果如下:
今天是周末,可以好好放松一下了。
相对于其他一些语言来说,Go 语言中的 switch 语句结构更加灵活,语法设计也是以方便为主。使用 switch 语句匹配变量的值,还可以将变量的赋值操作定义在 switch 关键字后面。在例 1 中,将变量的赋值放在 switch 关键字后面,将代码中的“switch weekday”修改为“switch weekday := "星期六";weekday”即可。
在设置变量的匹配项时,还可以在 case 后面设置多个值,多个值之间用逗号分隔。
【实例 2】判断当前季节。使用 switch 语句判断当前月份属于哪个季节,代码如下:
package main import "fmt" func main(){ month := 9 fmt.Println("现在是", month, "月") switch month { case 1, 2, 3: fmt.Printf("当前月份属于春季") case 4, 5, 6: fmt.Printf("当前月份属于夏季") case 7, 8, 9: fmt.Printf("当前月份属于秋季") default: fmt.Printf("当前月份属于冬季") } }运行结果如下:
现在是 9 月
当前月份属于秋季
当 switch 关键字后未设置变量时,case 后面必须是一个包含运算符的表达式,用于对已经声明的变量进行条件判断。
【实例 3】输出考试成绩对应的等级。将某学校的学生成绩转化为不同等级,划分标准如下:
- “优秀”,大于或等于90分;
- “良好”,大于或等于75分;
- “及格”,大于或等于60分;
- “不及格”,小于60分。
假设某学生的考试成绩是 66 分,输出该成绩对应的等级。代码如下:
package main import "fmt" func main(){ score := 66 switch { case score >= 90: fmt.Printf("考试成绩等级:优秀") case score >= 75: fmt.Printf("考试成绩等级:良好") case score >= 60: fmt.Printf("考试成绩等级:及格") default: fmt.Printf("考试成绩等级:不及格") } }运行结果如下:
考试成绩等级:及格
在默认情况下,当程序执行某个 case 语句之后,不会再向下执行其他 case 语句,而是直接跳出整个 switch 语句。要想继续执行下一个 case 语句,可以在 case 语句中加入 fallthrough 关键字。
示例代码如下:
package main import "fmt" func main(){ num := 20 switch num { case 10: fmt.Println("10") fallthrough case 20: fmt.Println("20") fallthrough case 30: fmt.Println("30") default: fmt.Println("其他值") } }运行结果如下:
20
30