开发者学堂课程【Go语言核心编程 - 基础语法、数组、切片、Map:switch 的课堂练习】与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/625/detail/9572
switch 的课堂练习
内容介绍:
一、switch 课堂练习
二、switch 与 if 的比较
前面已经讲过switch的基本语法和使用细节,但不能只说不练习肯定是认识不到位的,下面布置了四个课堂练习,将会对前三个进行讲解,第四个课后独立完成。
一、switch 课堂练习
1、案例1
使用 switch 把小写类型的 char 型转为大写(键盘输入)。只转换 a,b,c,d,e,其他的输出“other”。观察要求可知不允许使用函数。代码为:
func main(){
//定义主函数
var char byte
//定义字符型变量char,使用 byte 接收
fmt.Println(“
请输入一个字符
”)
//信息提示
fmt.Println(“%c”,&char)
//按照字符格式进行接收
switch char{
//进行顺序判断
case ‘a’:
//如输入等于a
fmt.Println(“A”)
//则输出A,其他的转换以此类推。这里是直接匹配进行输出,也可以用其他方法,比如通过asc码加上一个数值就可以转化为大写,asc码减去一个数值就可以转化为小写。
case ‘b’:
fmt.Println(“B”)
case ‘c’:
fmt.Println(“C”)
case ‘d’:
fmt.Println(“D”)
case ‘e’:
fmt.Println(“E”)
default:
fmt.Println(“other”)
// 如果以上都不是就输出other。
}
}
Ps:可以直接在软件上调整代码格式
运行结果:
D:\goproject\src\go_code\chapter05\exec\exec04>go run main . go
请输入一个字符..
a
A
D:\goproject\src\go_code\chapter05\exec\exec04>go run main . go
请输入一个字符..
b
B
D:\goproject\src\go_code\chapter05\exec\exec04>go run main . go
请输入一个字符..
t
o
ther
2、案例二
对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。(注:输入的成绩不能大于100)
代码为:
var score float64 //
定义score接收成绩,可能为小数所以类型为float
64。fmt.Println(“
请输入成绩
”)
//提示信息
fmt
.Scanln(&score)
//输入成绩后接收
switch int(score / 60){
//将score/60取整数进行判断,如果成绩为60以上的话,取整后值为1,如果取整后不为1,就代表不及格。
case 1: //判断为1的话 fmt
.Println(“
及格
”)
//则输出及格
case 0: //判断不为1的话
fmt
.Println(“
不及格
”)
//则输出不及格
default
: //其他情况
fmt
.Println(“
输入有误.
.”)
//则输出输入有误
运行结果:
D:\goproject\src\go_code\chapter05\exec\exec04>go run main . go
请输入成绩
9
0
及格
D:\goproject\src\go_code\chapter05\exec\exec04>go run main . go
请输入成绩
5
9
不及格
D:\goproject\src\go_code\chapter05\exec\exec04>go run main . go
请输入成绩
9
00
输入有误..
3、案例三
根据用户指定月份,打印该月份所属的季节。3、4、5春季,6、7、8夏季,9、10、11秋季,12、1、2冬季。
代码为:
var
month
byte
//定义变量month,类型为byte
fmt.Println(“
请输入月份
”)
//信息提示为输入月份
fmt.Scanln(&month)
//进行接收
switch month{
case 3,
.(“summer”)
case 9,10,11:
fmt.Println(“autumn”)
case 12,1,2:
fmt.Println(“winter”)
default:
//输入月份都不在这里面
fmt.Println(“
输入有误.
.”)
//则输出输入有误
这里用到了 Golang 中把多个表达式写在同一个 case 语句中的特性。
运行结果:
D:\goproject\src\go_code\chapter05\exec\exec04>go run main . go
请输入月份
1
winter
D:\goproject\src\go_code\chapter05\exec\exec04>go run main . go
请输入月份
8
summer
D:\goproject\src\go_code\chapter05\exec\exec04>go run main . go
请输入月份
3
s
pring
D:\goproject\src\go_code\chapter05\exec\exec04>go run main . go
请输入月份
8
9
输入有误..
4、案例四
根据用户输入显示对应的星期时间(String),如果“星期一”,显示“干煸豆角”;如果“星期二”,显示“醋溜土豆”;如果“星期三”,显示“红烧狮子头”;如果“星期四”,显示“油炸花生米”;如果“星期五”,显示“蒜蓉扇贝”;如果“星期六”,显示“东北乱炖”;如果“星期日”,显示“大盘鸡”。(自行练习)
二、Switch 和 if 的比较
switch 和 if 在 Golang 中的区别比较小,因为在前面讲解 switch 细节的时候讲过switch 本身就可以当 if-else 进行使用,可以什么条件都不要,甚至还能做范围的判断。但是如果需要用到的话,下面也可以了解一下,总结了什么情况下使用 switch ,什么情况下使用 if。
1、如果判断的具体数值不多,而且符合整数、浮点数、字符、字符串这几种类型。建议使用 switch 语句,简洁高效。比如判断春夏秋冬的例题,这个范围就是有限的,具体的数值不多,这个时候用 switch 是比较高效的。
2、其他情况,对区间判断和结果为 bool 类型的判断,使用 if , if 的使用范围更广。所以如果涉及范围的判断还是用 if,会更灵活方便,比如成绩的判断,性别的判断。