1.3.2 分支控制的分类
分支控制有如下几类: 1)单分支 2)双分支 3)多分支
1.3.2.1 单分支
· 概念
单分支指只存在一个判断逻辑的情况。即:"等你到了22岁,才允许结婚",言外之意,你没达到此条件,将无法结婚
· 语法
if 条件表达式{
//执行代码块
}
· 流程图

· 案例
【案例说明】 请编写程序,在控制台输入年龄,如果输入的年龄小于22岁,则提示:"不符合法定年龄,无法办理结婚证!" 【程序说明】 从控制台接收一个输入数据:fmt.Scanln(&age)
程序实现如下:
package main
import "fmt"
/**单分支语句结构案例*/
func main(){
var age int
fmt.Print("请输入年龄:")
fmt.Scanln(&age)
if age < 22{
fmt.Println("不符合法定年龄,无法办理结婚证!")
}
}
// 此时当我们输入年龄为18时,那么将会提示如下信息:
//请输入年龄:18
//不符合法定年龄,无法办理结婚证!
· 练习
请从控制台输入一个百位数字,判断该数字是否为偶数?(偶数是指能够被2所整除的整数)
1.3.2.2 双分支
- 概念
多分支语句是指存在2两个判断条件的语句。例如:如果明天是晴天,我们就去郊游,否则我们待在家里看电视。
- 与单分支比较
双分支语句的特点是:一定会执行流程控制语句块的中内容。也就是在双分支逻辑里面,就是做选择题,必须会执行一个代码块。而单分支只会在满足条件后,才会进入到执行语句块,否则就继续执行其它代码内容

- 流程图

- 语法
if 条件表达式{
//执行代码块
} else {
//执行代码块
}
- 案例
【案例说明】 请编写程序,在控制台输入气温,如果输入的气温高于38度,则提示"适合游泳",否则提示"不宜游泳,易感冒" 【程序说明】 从控制台接受一个输入数据:fmt.Scanln(&age)
程序实现如下:
package main
import "fmt"
/**双分支语句结构*/
func main(){
var temperature float64
fmt.Print("请输入今日气温:")
fmt.Scanln(&temperature)
if temperature > 38{
fmt.Println("适合游泳")
}else{
fmt.Println("不宜游泳,易感冒")
}
}
// 此时当我们输入气温为37时,那么将会提示如下信息:请输入今日气温:37不宜游泳,易感冒
- 思考
Q1:上述代码,在定义温度时,为什么采用float数据类型而不是int数据类型?
1.3.2.3 多分支
- 概念
多分支语句是指存在多个判断条件的语句
- 语法
if 条件表达式1{
//执行代码块1
}
else if 条件表达式2{
//执行代码块2
}else if 条件表达式3{
//执行代码块3
}.....else{
//执行代码块N
}
- 流程图

- 案例
【案例说明】 公司需要统计员工的薪资组成结构。按照不同维度来计算员工的薪资等级,规定薪资范围在5000以下的为初级员工,薪资范围在5000-8000的为中级员工,薪资范围在8000-12000的为中高级员工,薪资范围在12000-18000的为高级员工 【程序说明】 请从控制台输入员工薪资(正整数),判断该员工的职称范围
程序实现如下:
package main
import "fmt"
/**多分支案例*/
func main(){
var pay int
fmt.Print("请输入员工的薪资:")
fmt.Scanln(&pay)
if pay < 5000{
fmt.Println("该员工职称为:初级")
}else if pay >= 5000 && pay < 8000 {
fmt.Println("该员工职称为:中级")
}else if pay >= 8000 && pay < 12000{
fmt.Println("该员工职称为:中高级")
}else if pay >= 12000 && pay < 20000{
fmt.Println("该员工职称为:高级")
}
}
// 此时当我们输入薪资为5100时,那么将会提示如下信息:请输入员工的薪资:5100该员工职称为:中级
- 内容扩展
【思考】如果在判断条件上,不添加'&&'运算符,结果将会怎么样呢?(代码如下)
【解析】如果在判断条件上不添加'&&'运算符,那么结果将会与上面结果一致。这是因为在判断逻辑条件时,当满足时,就会执行条件里面的内容,后面的条件将不会再去判断。换言之,如果我将pay< 20000 放在第一个条件,当我输入1时,那么将会打印"高级",而不会打印"初级"
1.3.3 扩展
【思考】 在民政局,一般工作人员根据你的身份证或者户口本来判断你的是否符合要求,那么我们如何将程序改造,当用户输入身份证号码后,如何判断是否满足结婚要求?Q1:身份证的位数如何裁取?Q2:如何根据身份证来判断男女?Q3:根据我国《婚姻法》-第二章结婚-第六条法定婚龄,男女结婚年龄不一致,如何处理?
往期内容传送门:
go语言基础:流程控制(1)