首页> 基础笔记 >GoLang基础学习 >流程控制 流程控制
Golang流程控制-switch的使用的注意事项和细节
作者:小萝卜 2023-03-30 【 GoLang 】 浏览 544
简介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)