首页> 基础笔记 >GoLang基础学习 >流程控制 流程控制

Golang流程控制-switch的使用的注意事项和细节

作者:小萝卜 2023-03-30 浏览 211

简介case/switch后是一个表达式(即:常量值、变量、一个有返回值的函数等都可以)case后的各个表达式的值的数据类型,必须和 switch的表达式数据类型一致

switch的使用的注意事项和细节

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

//写一个非常简单的函数
func test(char byte) byte {
	return char + 1
}

func main() {

	// 	案例:
	// 请编写一个程序,该程序可以接收一个字符,比如: a,b,c,d,e,f,g  
	// a表示星期一,b表示星期二 …  根据用户的输入显示相依的信息.

	// 要求使用 switch 语句完成

	//分析思路
	//1. 定义一个变量接收字符
	//2. 使用switch完成
	// var key byte 
	// fmt.Println("请输入一个字符 a,b,c,d,e,f,g")
	// fmt.Scanf("%c", &key)

	switch test(key)+1 { //将语法现象
		case 'a':
			fmt.Println("周一, 猴子穿新衣")
		case 'b':
			fmt.Println("周二,猴子当小二")
		case 'c':
			fmt.Println("周三,猴子爬雪山")
		//...
		default:
			fmt.Println("输入有误...")
	}
}

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

	// var n1 int32 = 51
	// var n2 int32 = 20
	switch n1 {
		case n2, 10, 5 :  // case 后面可以有多个表达式
			fmt.Println("ok1")
		case 90 : 
			fmt.Println("ok2~")
		
	}

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

	// var n1 int32 = 51
	// var n2 int32 = 20
	switch n1 {
		case n2, 10, 5 :  // case 后面可以有多个表达式
			fmt.Println("ok1")
		case 90 : 
			fmt.Println("ok2~")
		
	}

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

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

6)  default语句不是必须的.

7)  switch后也可以不带表达式,类似   if --else分支来使用。【案例演示】

	//switch 后也可以不带表达式,类似 if --else分支来使用。【案例演示】
	var age int = 10
	
	switch {
		case age == 10 :
			fmt.Println("age == 10")
		case age == 20 :
			fmt.Println("age == 20")
		default :
			fmt.Println("没有匹配到")
	}

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

	//switch 后也可以直接声明/定义一个变量,分号结束,不推荐
	
	switch grade := 90; { // 在golang中,可以这样写
		case grade > 90 :
			fmt.Println("成绩优秀~..")
		case grade >=70 && grade <= 90 :
			fmt.Println("成绩优良~...")
		case grade >= 60 && grade < 70 :
			fmt.Println("成绩及格~...")
		default :
			fmt.Println("不及格~")
	}

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

	//switch 的穿透 fallthrought
	var num int = 10
	switch num {
		case 10:
			fmt.Println("ok1")
			fallthrough //默认只能穿透一层
		case 20:
			fmt.Println("ok2")
			fallthrough
		case 30:
			fmt.Println("ok3")	
		default:
			fmt.Println("没有匹配到..")
	}

10)  Type Switch:switch语句还可以被用于   type-switch来判断某个    interface变量中实际指向的变量类型【还没有学  interface,先体验一把】

很赞哦! (0)

文章评论

    高端网站建设