go学习总结(八)流程控制


前面我们写的程序都是从第一行开始执行,一直执行到末尾,一行一行的顺序执行下来,这种执行结构叫顺序执行结构。
GO语言除了有顺序结构,还有选择结构,循环结构。
 顺序结构:程序按顺序执行,不发生跳转。
 选择结构:依据是否满足条件,有选择的执行相应功能。
 循环结构:依据条件是否满足,循环多次执行某段代码。
下面先讲解选择结构:

选择结构

if结构

在编程中实现选择判断结构就是用if
if结构基本语法
if 条件判断{
代码语句
},
条件判断如果为真(true),那么就执行大括号中的语句,如果为假(false),就不执行大括号中的语句,(大家可以想一下,什么样的表达式返回的结果要么为true,要么为false),继续执行if结构后面的代码。
具体案例如下:
在这里插入图片描述
上面的程序可以进行简化:
在这里插入图片描述
条件不满足时不执行
在这里插入图片描述
GO语言相比其它语言要灵活很多,下面我们看一下if的另外一种语法格式
在这里插入图片描述

if else结构

基本语法
想一想:在使用if的时候,它只能做到满足条件时要做的事情。那万一需要在不满足条件的时候,做某些事,该怎么办呢?
例如:小赵的考试成绩大于90(含)分,那么爸爸奖励他100元钱,否则的话,爸爸就让小赵跪方便面。
有同学可能会想,这道题用if结构也可以实现。如下所示:
在这里插入图片描述
虽然以上代码可以实现,但是比较麻烦,我们可以使用更简单的方式:else
结构如下:
if 条件判断{
代码语句1
}else{
代码语句2
}
首先先执行if后面的条件判断,如果条件判断成立(结果为真),执行if后面的代码语句1,代码语句1执行完成后,表示整个if—else–结构结束了(else后面的代码语句2不会执行),继续执行后面的代码。如果if后面的条件判断不成立也就是结果为假,那么if后面的代码语句1不会被执行,这时会执行else后面的代码语句2,执行完后,表示整个if—else—结构执行结束了,再执行后续的代码。
下面我们通过if—else—结果完成上面的案例。
在这里插入图片描述

if 嵌套

我们上面的案例中,使用的是if-else的基本结构,其实if-else结构还可以进行嵌套使用。
例如:输入公交卡当前的余额,只要超过2元,就可以上公交车;如果空座位的数量大于0,就可以坐下
在这里插入图片描述
以上案例在if中嵌套了if-else结构,同理在else也可以嵌套if-else结构,这个要根据实际情况确定。下面我们看如下题目:
对学员的结业考试成绩评测(大家考虑用if好还是用if-else好)
成绩>=90 :A
90>成绩>=80 :B
80>成绩>=70 :C
70>成绩>=60 :D
成绩<60 :E
我们先使用if来实现上面的问题:
在这里插入图片描述
上面的代码我们发现最后都会输出“E”,为什么呢?
解决方案如下:
在这里插入图片描述
下面我们来使用if-else 结构来解决上面的问题
案例演示如下:
在这里插入图片描述
上面的代码虽然满足了我们的需求,但是嵌套的代码非常多,可读性比较差,我们在以后的编程工作中尽量避免这种多重嵌套。通过这道题,我们发现在这种多条件判断应用的场景中不太适合通过 if(适合一种条件判断的情况)或者是if-else(适合两种条件判断的情况或者是判断条件不是很多的场景)进行判断。上面的题目更好的方法:if-else if结构

if- else if结构

基本语法如下:
if 条件判断{
要执行的代码段
}else if 条件判断{
要执行的代码段
}else if 条件判断{
要执行的代码段
}else if条件判断{
要执行的代码段
}…………………………….else{
}
通过以上的语法格式我们发现,可以写很多的else if结构。
具体的执行过程:程序首先判断第一个if所带的小括号中的判断条件,如果条件成立,也就是返回一个true,
则执行该if所带的大括号中的代码,执行完成后,立即跳出if else-if结构。
如果第一个if所带的判断条件不成立,也就是返回一个false,则继续向下进行判断,依次的判断每一个if所带
的判断条件,如果成立,就执行该if所带的大括号中的代码,如果不成立,则继续向下判断,
如果每个if所带的判断条件都不成立,就看当前这个if else-if结构中是否存在else。
如果有else的话,则执行else中所带的代码,如果没有else,则整个 if-else if什么都不做。
else可以省略。
下面我们使用该结构完成上面的案例:
在这里插入图片描述
通过以上代码,我们发现if-else if 结构在进行多条件判断时确实比if, if-else(嵌套)要方便很多,并且结构清晰,阅读性比较强。

switch结构

下面我们开始讲解选择中的另外一个结构就是switch结构。
在讲解switch结构之前,我们先来看如下问题:

李四的年终工作评定,如果定为A级,则工资涨500元,如果定为B级,则工资涨200元,如果定为C级,工资不变,如果定为D级工资降200元,如果定为E级工资降500元.
设李四的原工资为5000,请用户输入李四的评级,然后显示李四来年的工资.

大家看到如上题目,肯定想到的是用if-else if结构来实现,那么具体案例实现如下:
在这里插入图片描述
虽然以上代码实现了我们的需求,但是我们发现了一个问题,如果输入其它字符(例如:输入字符T),我们发现最终的结果不仅输出了“输入错误,程序退出”,同时还输出了“李四来年的工资是:5000”。如果输入错误了,这句话是不应该输出的,那么应该怎样进行处理呢?
在这里插入图片描述
通过上面的代码,我们实际上是定义了一个bool类型的变量,默认值为true,当输入评定级别错误时,将其改为false.最后在输出工资时,做了判断,如果条件成立表示输入了正确的评定级别,所以输出对应的工资,否则不输出工资。(这种技巧,需要大家好好体会一下)
我们前面在讲解if-else if结构时讲过,该结构适合什么场合:1.多条件判断,2:区间性的数据判断。但是我们看一下该案例,是否是对区间性的数据进行判断呢?不是,而是定值判断,也就是对一个固定值的判断。
对这种固定值的判断推进使用switch-case结构。

switch-case结构语法如下:
switch 变量或者表达式的值{
case 值1:
要执行的代码
case 值2:
要执行的代码
case 值3:
要执行的代码
…………………………………
default:
要执行的代码
}
switch-case结构的执行流程:
程序执行到switch处,首先将变量或者表达式的值计算出来,然后拿着这个值依次跟每个case后面所带的值进行匹配,一旦匹配成功,则执行该case所带的代码,执行完成后,跳出switch-case结构。如果,跟每个case所带的值都不匹配。就看当前这个switch-case结构中是否存在default,如果有default,则执行default中的语句,如果没有default,则该switch-case结构什么都不做。
基本案例演示如下:
在这里插入图片描述
GO语言中switch-case结构中,case后面默认自带break(终止程序执行),这是与其它语言不同的地方。
另外一种语法格式如下:
在这里插入图片描述
注意:某个case 后面跟着的代码执行完毕后,不会再执行后面的case,而是跳出整个switch结构, 相当于每个case后面都跟着break(终止),但是如果我们想执行完成某个case后,强制执行后面的case,可以使用fallthrough。

下面我们用switch-case结构来实现上面的案例,示例如下:
在这里插入图片描述
根据输入的年份月份 计算这个月有多少天
在这里插入图片描述
注意:case后面可以接收多个值,其他的语言只能接收一个值

循环结构

在GO语言中,我们有专门实现这种循环的结构就是for结构(GO语言中只有for循环结构,没有while,do-while结构),基本语法结构如下:
for 表达式1;表达式2;表达式3{
循环体
}
表达式1:定义一个循环的变量,记录循环的次数
表达式2:一般为循环条件,循环多少次
表达式3:一般为改变循环条件的代码,使循环条件终有一天不再成立
循环体:重复要做的事情。
下面我们用for循环结构输出10遍“学习使我快乐”。
在这里插入图片描述
找出100-999间的水仙花数
分析:水仙花数指的就是 这个百位数字的,百位的立方+十位的立方+个位的立方==当前这个百位数字
例如:153这个数字 百位数为1, 十位数为5,个位数为3
那么1的立方是1, 5的立方是125, 3的立方是27。那么1+125+27正好是153
所以这道题的关键是我们怎样获取某个三位数字中的百位,十位,个位。
方法如下:
百位:153/100
十位:153%100/10
个位:153%10
具体案例如下:
在这里插入图片描述

跳转语句

关于GO语句中的跳转语句,有break,continue,goto(与函数结合使用,后期讲解到函数在讲)
下面我们先来讲解break.
根据前面的案例,我们发现,循环必须指定循环条件,在满足循环条件的时候执行循环,如果不满足循环的条件,可以跳出整个循环。但是如果,我们没有指定循环条件,那么循环就成了死循环,所谓的死循环指的就是一直循环,跳不出来了。
怎样构建死循环呢?语法如下:
在这里插入图片描述
案例:要求用户输入用户名和密码,只要不是admin、888888就一直提示用户名,密码错误,请重新输入。
分析:该题我们怎样构建循环条件呢?
按照我们以前的做法,很难构建循环条件,那么我们可以使用死循环来做,但是,我们要在用户输入正确的用户名和密码的时候跳出整个循环,那么我们应该怎样强制的跳出死循环呢?我们可以使用break关键字。
break的作用就是跳出本次循环
在这里插入图片描述
continue语句
前面我们已经讲解完成了break,下面我们来说一下continue语句。
continue的作用是:立即结束本次循环,判断循环条件,如果成立,则进入下一次循环,否则退出循环.
基本语法:
在这里插入图片描述
循环嵌套
我们在前面学习选择结构时,讲解过关于选择结构的嵌套,同理循环结构也有嵌套。
在屏幕上输出如下图所示的乘法口诀表
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vegetablesssss

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值