switch 的课堂练习|学习笔记

简介: 快速学习switch 的课堂练习

开发者学堂课程【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

other

2、案例二

对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。(注:输入的成绩不能大于100

代码为:

var score float64 //定义score接收成绩,可能为小数所以类型为float64。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

请输入成绩

90

及格

D:\goproject\src\go_code\chapter05\exec\exec04>go run main . go

请输入成绩

59

不及格

D:\goproject\src\go_code\chapter05\exec\exec04>go run main . go

请输入成绩

900

输入有误..

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

spring

D:\goproject\src\go_code\chapter05\exec\exec04>go run main . go

请输入月份

89

输入有误..

4、案例四

根据用户输入显示对应的星期时间(String),如果“星期一”,显示“干煸豆角”;如果“星期二”,显示“醋溜土豆”;如果“星期三”,显示“红烧狮子头”;如果“星期四”,显示“油炸花生米”;如果“星期五”,显示“蒜蓉扇贝”;如果“星期六”,显示“东北乱炖”;如果“星期日”,显示“大盘鸡”。(自行练习)


二、Switch 和 if 的比较

switch 和 if 在 Golang 中的区别比较小,因为在前面讲解 switch 细节的时候讲过switch 本身就可以当 if-else 进行使用,可以什么条件都不要,甚至还能做范围的判断。但是如果需要用到的话,下面也可以了解一下,总结了什么情况下使用 switch ,什么情况下使用 if。

1、如果判断的具体数值不多,而且符合整数、浮点数、字符、字符串这几种类型。建议使用 switch 语句,简洁高效。比如判断春夏秋冬的例题,这个范围就是有限的,具体的数值不多,这个时候用 switch 是比较高效的。

2、其他情况,对区间判断和结果为 bool 类型的判断,使用 if , if 的使用范围更广。所以如果涉及范围的判断还是用 if,会更灵活方便,比如成绩的判断,性别的判断。

相关文章
|
存储 网络协议 关系型数据库
计算机之服务器的分类?
计算机之服务器的分类?
|
物联网 API JavaScript
数据中台驱动下的工业软件集成
当前大中型离散制造型企业信息化建设过程中,普遍存在数据交互复杂度高、基础数据语义多样化,以及升级维护难度大等痛点。本文引入阿里云数据总线、服务总线以及数字工厂等产品,探讨一种基于工业数据中台的工业软件集成解决方案。
3418 0
数据中台驱动下的工业软件集成
|
存储 SQL 数据采集
一篇文章彻底理解大数据的列式存储
一篇文章彻底理解大数据的列式存储
一篇文章彻底理解大数据的列式存储
|
机器学习/深度学习 算法 Ubuntu
dlib
【6月更文挑战第13天】
294 4
|
网络协议 物联网 Java
Go与Java:在物联网领域的适用性分析
本文对比分析了Go和Java在物联网领域的适用性。Go语言因其轻量级、高效和并发特性,适合资源受限的物联网设备,特别是处理并发连接和数据流。Java则凭借跨平台性、丰富的生态系统和企业级应用能力,适用于大型物联网系统和复杂业务场景。两者在物联网领域各有优势,开发者可根据项目需求选择合适的语言。
|
JavaScript
设置VSCode快捷键vue生成代码片段
设置VSCode快捷键vue生成代码片段
设置VSCode快捷键vue生成代码片段
|
安全 关系型数据库 MySQL
合理使用索引
【5月更文挑战第9天】这篇文章探讨了数据库索引的高效使用,包括函数和表达式索引、查找和删除未使用的索引、安全删除索引、多列索引策略、部分索引以及针对通配符搜索、排序、散列和降序索引的特殊技巧。还介绍了部分索引在减少索引大小和处理唯一性约束中的应用,以及PostgreSQL对前导通配符搜索的支持。通过遵循简单的多列索引规则和利用特定类型的索引,如哈希和降序索引,可以显著提高查询性能。
170 0
|
NoSQL 关系型数据库 MySQL
jump server
jump server
324 0
|
API 开发工具 数据库
【国产开发神器】零代码搭建API接口开放/管理平台——YesApi
YesApi 接口大师,是一款国产企业级API接口管理平台,可以零代码、快速搭建API接口开发平台、接口开放平台、接口管理平台。基于PhalApi Pro 接口开发框架专业版软件,通过低代码可视化配置方式帮助企业快速搭建接口开放平台和管理API接口。 所以说:YesApi接口大师 = 接口低代码开发 + 接口零代码开放 + 接口零代码管理 + 接口计费