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
 ICP备案:
 公安联网备案: