当前位置:网站首页>golang流程控制:if分支、switch分支和fallthrough switch穿透
golang流程控制:if分支、switch分支和fallthrough switch穿透
2022-08-08 18:54:00 【学亮编程手记】
引入
【1】流程控制的作用:
流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。
【2】控制语句的分类:
控制语句分为三类:顺序、选择和循环。
“顺序结构”代表“先执行a,再执行b”的逻辑。
“条件判断结构”代表“如果…,则…”的逻辑。
“循环结构”代表“如果…,则再继续…”的逻辑。
三种流程控制语句就能表示所有的事情!不信,你可以试试拆分你遇到的各种事情。这三种基本逻辑结构是相互支撑的,它们共同构成了算法的基本结构,无论怎样复杂的逻辑结构,都可以通过它们来表达。所以任何一种高级语言都具备上述两种结构。
本章是大家真正进入编程界的“门票”。
【3】流程控制的流程:
if分支
单分支
【1】基本语法
if 条件表达式 {
逻辑代码
}
当条件表达式为ture时,就会执行得的代码。
PS:条件表达式左右的()可以不写,也建议不写
PS:if和表达式中间,一定要有空格
PS:在Golang中,{}是必须有的,就算你只写一行代码。
【2】代码练习:
package main
import "fmt"
func main(){
//实现功能:如果口罩的库存小于30个,提示:库存不足:
//var count int = 100
//单分支:
// if count < 30 {
// fmt.Println("对不起,口罩存量不足")
// }
//if后面表达式,返回结果一定是true或者false,
//如果返回结果为true的话,那么{}中的代码就会执行
//如果返回结果为false的话,那么{}中的代码就不会执行
//if后面一定要有空格,和条件表达式分隔开来
//{}一定不能省略
//条件表达式左右的()是建议省略的
//在golang里,if后面可以并列的加入变量的定义:
if count := 20;count < 30 {
fmt.Println("对不起,口罩存量不足")
}
}
双分支
【1】基本语法
if 条件表达式 {
逻辑代码1
} else {
逻辑代码2
}
当条件表达式成立,即执行逻辑代码1,否则执行逻辑代码2。{}
也是必须有的。
PS:下面的格式是错误的:
if 条件表达式 {
逻辑代码1
}
else {
逻辑代码2
}
PS:空格加上,美观规范
【2】代码练习:
package main
import "fmt"
func main(){
//实现功能:如果口罩的库存小于30个,提示:库存不足,否则提示:库存充足
//定义口罩的数量:
var count int = 70
if count < 30 {
//这个条件表达式返回的是true的话,后面{}执行了
fmt.Println("库存不足")
} else {
//count >= 30
fmt.Println("库存充足")
}
//双分支一定会二选一走其中一个分支。
}
多分支
【1】基本语法
if 条件表达式1 {
逻辑代码1
} else if 条件表达式2 {
逻辑代码2
}
.......
else {
逻辑代码n
}
【2】代码练习:
package main
import "fmt"
func main(){
//实现功能:根据给出的学生分数,判断学生的等级:
// >=90 -----A
// >=80 -----B
// >=70 -----C
// >=60 -----D
// <60 -----E
//方式1:利用if单分支实现:
//定义一个学生的成绩:
var score int = 18
//对学生的成绩进行判定:
// if score >= 90 {
// fmt.Println("您的成绩为A级别")
// }
// if score >= 80 && score < 90 {
// fmt.Println("您的成绩为B级别")
// }
// if score >= 70 && score < 80 {
// fmt.Println("您的成绩为C级别")
// }
// if score >= 60 && score < 70 {
// fmt.Println("您的成绩为D级别")
// }
// if score < 60 {
// fmt.Println("您的成绩为E级别")
// }
//上面方式1利用多个单分支拼凑出多个选择,多个选择是并列的,依次从上而下顺序执行,即使走了第一个分支,那么其它分支也是需要判断
//方式2:多分支:优点:如果已经走了一个分支了,那么下面的分支就不会再去判断执行了
// if score >= 90 {
// fmt.Println("您的成绩为A级别")
// } else if score >= 80 {//else隐藏:score < 90
// fmt.Println("您的成绩为B级别")
// } else if score >= 70 {//score < 80
// fmt.Println("您的成绩为C级别")
// } else if score >= 60 {//score < 70
// fmt.Println("您的成绩为D级别")
// } else {//score < 60
// fmt.Println("您的成绩为E级别")
// } //建议你保证else的存在,只有有了else才会真正 起到多选一 的效果
if score > 10 {
fmt.Println("aaa")
} else if score > 6{
fmt.Println("bbb")
}
}
switch分支
【1】基本语法:
switch 表达式 {
case 值1,值2,.….:
语句块1
case 值3,值4,...:
语句块2
....
default:
语句块
}
【2】代码练习:
package main
import "fmt"
func main(){
//实现功能:根据给出的学生分数,判断学生的等级:
// >=90 -----A
// >=80 -----B
// >=70 -----C
// >=60 -----D
// <60 -----E
//给出一个学生分数:
var score int = 187
//根据分数判断等级:
//switch后面是一个表达式,这个表达式的结果依次跟case进行比较,满足结果的话就执行冒号后面的代码。
//default是用来“兜底”的一个分支,其它case分支都不走的情况下就会走default分支
//default分支可以放在任意位置上,不一定非要放在最后。
switch score/10 {
case 10 :
fmt.Println("您的等级为A级")
case 9 :
fmt.Println("您的等级为A级")
case 8 :
fmt.Println("您的等级为B级")
case 7 :
fmt.Println("您的等级为C级")
case 6 :
fmt.Println("您的等级为D级")
case 5 :
fmt.Println("您的等级为E级")
case 4 :
fmt.Println("您的等级为E级")
case 3 :
fmt.Println("您的等级为E级")
case 2 :
fmt.Println("您的等级为E级")
case 1 :
fmt.Println("您的等级为E级")
case 0 :
fmt.Println("您的等级为E级")
default:
fmt.Println("您的成绩有误")
}
}
【3】注意事项:
(1)switch后是一个表达式(即:常量值、变量、一个有返回值的函数等都可以)
(2)case后面的值如果是常量值(字面量),则要求不能重复
(3)case后的各个值的数据类型,必须和 switch 的表达式数据类型一致
(4)case后面可以带多个值,使用逗号间隔。比如 case 值1,值2…
(5)case后面不需要带break
(6)default语句不是必须的,位置也是随意的。
(7)switch后也可以不带表达式,当做if分支来使用
(8)switch后也可以直接声明/定义一个变量,分号结束,不推荐
(9)switch穿透,利用fallthrough
关键字,如果在case语句块后增加fallthrough
,则会继续执行下一个case,也叫switch穿透。
边栏推荐
- Is it safe to open an account with Qiniu Business School?Is it reliable to open an account?
- Fortinet new cloud native protection products launched amazon cloud platform of science and technology
- C language elementary - structure
- Is there any function in MAXCOMPUTE SQL to judge whether the string is a number?
- DHCP服务初探
- The origin and creation of Smobiler's complex controls
- Smobiler的复杂控件的由来与创造
- El - tree set radio, click finish after assemble
- 轻量全景查看器 pannellum初探
- 21天学习挑战赛——机器学习02
猜你喜欢
随机推荐
APICloud AVM wraps date and time selection components
Redis之SDS数据结构
期货开户哪家公司好,要正规安全的
shake数据库中 启动报这个错,请问是哪里配置有问题吗?
3D角色建模师和3D角色动画师哪个更有前景?哪个更适合小白入门?
【761. Special binary sequence】
性能优化|从ping延时看CPU电源管理
Azure Neural TTS continues to be updated to help enterprises develop small language markets
软件测试主要是做什么的?
在Unity URP中实现Forward+
堆排序(Heap Sort)实现
架构设计基本原则
Smobiler的复杂控件的由来与创造
hdu2647 N!Again
进化的黑产 vs 进击的蚂蚁:支付宝的每一次点击,都离不开一张“图”的守护
Securities account is better to choose which brokerage platform, which is more safe
Goose Factory Robot Dog Fancy Crossing 10m Plum Blossom Pile: Front Flip, Single Pile Jump, Get Up and Bow... No stumble in the whole process
Fortinet全新云原生保护产品上线亚马逊云科技平台
企业进行知识共享的好处有哪些?
Oracle存储修改以前的历史记录,怎么查找?