图2:switch case 语句的执行过程
从图2了解到 switch case 语句的具体执行过程,它根据某个变量值进行选择,case 语句是设置变量的区间值,只要变量符合其中某个 case 的区间值,程序就会自动执行相应的代码,如果所有 case 的区间值都不符合,则执行 default 的代码。
switch case 语句的语法格式如下:
switch 变量 {
case 值1:
执行语句1
case 值2:
执行语句2
default:
执行语句N
switch {
case 变量的条件判断1:
执行语句1
case 变量的条件判断2:
执行语句2
default:
执行语句N
switch 定义变量; 变量{
case 变量的条件判断1:
执行语句1
case 变量的条件判断2:
执行语句2
default:
执行语句N
switch case 语句的语法格式说明如下:
关键字 switch 后面可根据需要决定是否设置变量,并且末端必须加上中括号
{}
,中括号里面是执行关键字 case 的分支条件。
一个 switch 语句中可以设有多个关键字 case,但只有一个关键字 default。
关键字 case 是设置变量的判断条件,若符合条件,则运行 case 的执行语句,执行完毕后直接跳出整个 switch 语句,不再往下执行。
程序在执行 switch 语句的时候,case 语句都是从上至下按顺序执行的,所以每个 case 的判断条件建议不要重合,不然很容易造成逻辑上的混乱。
根据 switch 的语法格式分别列举应用例子,代码如下:
package main
import (
"fmt"
"math/rand"
"time"
func main() {
// 使用方法1
finger := 3
switch finger {
// 当变量finger=1的时候
case 1:
fmt.Println("大拇指")
// 当变量finger=2的时候
case 2:
fmt.Println("食指")
// 当变量finger=3的时候
case 3:
fmt.Println("中指")
case 4:
fmt.Println("无名指")
case 5:
fmt.Println("小拇指")
default:
fmt.Println("无效的输入!")
// 使用方法2
rand.Seed(time.Now().Unix())
num := rand.Intn(100)
switch {
// 判断num是否大于20
case num < 20:
fmt.Printf("变量num的值为:%v,小于20\n", num)
default:
fmt.Printf("变量num的值为:%v,大于20\n", num)
// 使用方法3
rand.Seed(time.Now().Unix())
switch n := rand.Intn(9); n {
// 变量n在(1, 3, 5, 7, 9)区间内
case 1, 3, 5, 7, 9:
fmt.Printf("奇数,值为:%v,小于20\n", n)
// 变量n在(2, 4, 6, 8)区间内
case 2, 4, 6, 8:
fmt.Printf("偶数,值为:%v,小于20\n", n)
default:
fmt.Printf("啥也不是")
上述代码列举了 switch case 语句的3种使用方式,虽然在语法格式上存在细微差异,但整体上没有太大差异,总的来说:
如果关键字 switch 后面设有变量,关键字 case 只需设置变量的区间值;
如果关键字switch后面没有设置变量,关键字case必须对变量进行条件判断。
运行上述代码,运行结果如图3所示。
图3:示例1运行结果
默认情况下,当程序执行了某个 case 语句之后,它不再往下执行其他 case 语句,若想程序继续执行下一个 case 语句,可以在 case 语句中加入关键字 fallthrough,示例如下:
package main
import "fmt"
func main() {
finger := 1
switch finger {
// 当变量finger=1的时候
case 1:
fmt.Println("大拇指")
fallthrough
// 当变量finger=2的时候
case 2:
fmt.Println("食指")
fallthrough
// 当变量finger=3的时候
case 3:
fmt.Println("中指")
case 4:
fmt.Println("无名指")
case 5:
fmt.Println("小拇指")
default:
fmt.Println("无效的输入!")
运行上述代码,运行结果如图4所示。
图4:示例2运行结果
从运行结果看到,程序首先执行 case 1 的代码,由于 case 1 的代码设置了关键字 fallthrough,程序继续执行 case 2 的代码;case 2 的代码也设置了关键字 fallthrough,所以程序继续执行 case 3 的代码,以此类推,直到执行关键字 default 的代码为止。
上述代码的 case 3 没有写入关键字 fallthrough,所以执行完 case 3 的代码后,程序就跳出整个 switch 语句。
关注公众号「
站长严长生
」,在手机上阅读所有教程,随时随地都能学习。内含一款搜索神器,免费下载全网书籍和视频。
微信扫码关注公众号
一套完整的嵌入式开发学习路线(高薪就业版)
一套课程卖1万,TMD太贵了!
跑了3000公里,见了一位大佬
Linux /etc/rc.d/rc.local配置文件用法
Linux日志服务器设置过程
Debug和Release的区别是什么(非常详细)?
HBase创建表(create命令)
pluginManagement:管理Maven插件
Maven镜像(mirror)
Spring Bean生命周期