1. switch简介

1) switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上到下逐一测 试,直到匹配为止。

2) 匹配项后面也不需要再加 break

2. switch语法

switch 表达式 {
    case 表达式1,表达式2,...:
            语句块1
    case 表达式3,表达式4,...:
            语句块2
     ......
     default:
             语句块n  
}

语法说明:

1) switch的执行的流程是,先执行表达式,得到值,然后和case的表达式进行比较,如果相等,就匹配到,然后执行对应的 case 的语句块,然后退出 switch 控制。
2) 如果 switch 的表达式的值没有和任何的 case 的表达式匹配成功,则执行 default 的语句块。执行后退出 switch 的控制.
3) golang的case后的表达式可以有多个,使用逗号间隔.
4) golang 中的 case 语句块不需要写 break , 因为默认会有,即在默认情况下,当程序执行完 case 语句块后,就直接退出该 switch 控制结构。 

3. switch的流程图

4. switch使用案例

package main
import "fmt"

func main(){
	var key byte
	fmt.Println("请输入a,b,c,d,e,f,g中的任意字符")
	fmt.Scanf("%c",&key)

	switch key {
		case \'a\':
			fmt.Println("今天星期1")
		case \'b\':
			fmt.Println("今天星期2")
		case \'c\':
			fmt.Println("今天星期3")
		case \'d\':
			fmt.Println("今天星期4")
		case \'e\':
			fmt.Println("今天星期5")
		case \'f\':
			fmt.Println("今天星期6")
		case \'g\':
			fmt.Println("今天星期日")
		default:
			fmt.Println("你的输入有误")
	}
}

5. switch使用注意事项

1)case/switch 后是一个表达式( 即:常量值、变量、一个有返回值的函数等都可以)

2)case 后的各个表达式的值的数据类型,必须和 switch 的表达式数据类型一致

3)case 后面可以带多个表达式,使用逗号间隔。比如 case 表达式 1, 表达式 2 …

4) case后面的表达式如果是常量值(字面量),则要求不能重复

5) case 后面不需要带 break , 程序匹配到一个 case 后就会执行对应的代码块,然后退出 switch,如 果一个都匹配不到,则执行 default

6) default 语句不是必须的

7) switch 后也可以不带表达式,类似 if –else 分支来使用 

8) switch 后也可以直接声明/定义一个变量,分号结束,不推荐。  

9)switch 穿透-fallthrough ,如果在 case 语句块后增加 fallthrough ,则会继续执行下一个 case,也 叫 switch 穿透 

package main
import "fmt"

func main(){
	var num int = 10
	switch num {
		case 10:
			fmt.Println("ok")
			fallthrough			//默认一个fallthrough只能穿透一层
		case 20:
			fmt.Println("ok~20")
			fallthrough
		case 30:
			fmt.Println("ok~30")
		default:
			fmt.Println("匹配错误")
	}
}

代码结果示例:

6. switch和if比较

1) 如果判断的具体数值不多,而且符合整数、浮点数、字符、字符串这几种类型。建议使用 swtich 语句,简洁高效。

2) 其他情况:对区间判断和结果为 bool 类型的判断,使用 if,if 的使用范围更广。 

 

版权声明:本文为qiyedetonghua原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/qiyedetonghua/articles/10955172.html