Golang-程序流程控制 ifswitch
Posted essaycode
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang-程序流程控制 ifswitch相关的知识,希望对你有一定的参考价值。
程序流程控制介绍
在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句。
1)顺序控制
2)分支控制
3)循环控制
顺序控制
程序从上到下逐行地执行,中间没有任何判断和跳转。
一个案例说明,必须下面的代码中,没有判断,也没有跳转.因此程序按照默认的流程执行,即顺序控制。
顺序控制的一个流程图
顺序控制举例和注意事项
Golang 中定义变量时采用合法的前向引用。如: func main() { var num1 int = 10 //声明了 num1 var num2 int = num1 + 20 //使用 num1 fmt.Println(num2) } 错误形式: func main() { var num2 int = num1 + 20 //使用 num1 var num1 int = 10 // 声 明 num1 (×) fmt.Println(num2) }
分支控制
分支控制就是让程序有选择执行。有下面三种形式
1)单分支
2)双分支
3)多分支
单分支控制
基本语法
请大家看个案例[ifDemo.go]:
编写一个程序,可以输入人的年龄,如果该同志的年龄大于 18 岁,则输出 "你年龄大于 18,要对自己的行为负责!" 需求---[分析] >代码
单分支的流程图
流程图可以用图形方式来更加清晰的描述程序执行的流程。
单分支细节说明
双分支控制
基本语法
请大家看个案例[ifDemo.go]:
编写一个程序,可以输入人的年龄,如果该同志的年龄大于 18 岁,则输出 "你年龄大于 18,要对自己的行为负责!" 需求---[分析] >代码
?双分支的流程图的分析
对双分支的总结
1.从上图看 条件表达式就是 age >18
2.执行代码块 1 ===> fmt.Println("你的年龄大于 18") ..
3.执行代码块 2 ===> fmt.Println("你的年龄不大 ") .
4.强调一下 双分支只会执行其中的一个分支。
单分支和双分支的案例
5)编写程序,声明 2 个 int32 型变量并赋值。判断两数之和,如果大于等于 50,打印“hello world!
6)编写程序,声明 2 个 float64 型变量并赋值。判断第一个数大于 10.0,且第 2 个数小于 20.0,打印两数之和。
7)【选作】定义两个变量 int32,判断二者的和,是否能被 3 又能被 5 整除,打印提示信息
8)判断一个年份是否是闰年,闰年的条件是符合下面二者之一:(1)年份能被 4 整除,但不能被 100整除;(2)能被 400 整除
多分支控制
基本语法
对上面基本语法的说明
1)多分支的判断流程如下:
(1)先判断条件表达式 1 是否成立,如果为真,就执行代码块 1
(2)如果条件表达式 1 如果为假,就去判断条件表达式 2 是否成立, 如果条件表达式 2 为真, 就执行代码块 2
(3)依次类推.
(4)如果所有的条件表达式不成立,则执行 else 的语句块。
2)else 不是必须的。
3)多分支只能有一个执行入口。看一个多分支的流程图(更加清晰)
多分支的快速入门案例
岳小鹏参加 Golang 考试,他和父亲岳不群达成承诺: 如果:
成绩为 100 分时,奖励一辆 BMW;
成绩为(80,99]时,奖励一台 iphone7plus; 当成绩为[60,80]时,奖励一个 iPad;
其它时,什么奖励也没有。
请从键盘输入岳小鹏的期末成绩,并加以判断代码如下:
对初学者而言,有一个使用陷阱.
练习题
嵌套分支
基本介绍
在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层分支外面的分支结构称为外层分支。
案例
参加百米运动会,如果用时 8 秒以内进入决赛,否则提示淘汰。并且根据性别提示进入男子组或女子组。【可以让学员先练习下】, 输入成绩和性别。
出票系统:根据淡旺季的月份和年龄,打印票价 [考虑学生先做] 4_10 旺季:
成人(18-60):60 儿童(<18):半价老人(>60):1/3
淡季:
成人:40 其他:20
switch 分支控制
基本的介绍
1)switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上到下逐一测试,直到匹配为止。
2)匹配项后面也不需要再加 break
语法及流程控制图
对上图的说明和总结
1)switch 的执行的流程是,先执行表达式,得到值,然后和 case 的表达式进行比较,如果相等, 就匹配到,然后执行对应的 case 的语句块,然后退出 switch 控制。
2)如果 switch 的表达式的值没有和任何的 case 的表达式匹配成功,则执行 default 的语句块。执行后退出 switch 的控制.
3)golang 的 case 后的表达式可以有多个,使用 逗号 间隔.
4)golang 中的 case 语句块不需要写 break , 因为默认会有,即在默认情况下,当程序执行完 case 语句块后,就直接退出该 switch 控制结构。
案例
请编写一个程序,该程序可以接收一个字符,比如: a,b,c,d,e,f,g a 表示星期一,b 表示星期二 … 根据用户的输入显示相依的信息.要求使用 switch 语句完成
switch 的使用的注意事项和细节
1)case/switch 后是一个表达式( 即:常量值、变量、一个有返回值的函数等都可以)
2)case 后的各个表达式的值的数据类型,必须和 switch 的表达式数据类型一致
3)case 后面可以带多个表达式,使用逗号间隔。比如 case 表达式 1, 表达式 2 ...
4)case 后面的表达式如果是常量值(字面量),则要求不能重复
5)case 后面不需要带break , 程序匹配到一个 case 后就会执行对应的代码块,然后退出 switch,如果一个都匹配不到,则执行 default
6)default 语句不是必须的.
7)switch 后也可以不带表达式,类似 if --else 分支来使用。【案例演示】
8)switch 后也可以直接声明/定义一个变量,分号结束,不推荐。 【案例演示】
9)switch 穿透-fallthrough ,如果在 case 语句块后增加 fallthrough ,则会继续执行下一个 case,也叫 switch 穿透
10)Type Switch:switch 语句还可以被用于 type-switch 来判断某个 interface 变量中实际指向的变量类型 【还没有学 interface, 先体验一把】
switch 的课堂练习
1)使用 switch 把小写类型的 char 型转为大写(键盘输入)。只转换 a, b, c, d, e. 其它的输出“other”。
2)对学生成绩大于 60 分的,输出“合格”。低于 60 分的,输出“不合格”。(注:输入的成绩不能大于 100)
3)根据用户指定月份,打印该月份所属的季节。3,4,5 春季 6,7,8 夏季 9,10,11 秋 季 12, 1, 2 冬季
switch 和 if 的比较
总结了什么情况下使用 switch ,什么情况下使用 if
1)如果判断的具体数值不多,而且符合整数、浮点数、字符、字符串这几种类型。建议使用 swtich语句,简洁高效。
2)其他情况:对区间判断和结果为 bool 类型的判断,使用 if,if 的使用范围更广。
以上是关于Golang-程序流程控制 ifswitch的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript之基础-6 JavaScript 分支结构 (ifif-elseelse ifswitch-case)