go语言的避坑与技巧 (go语言接口布局详解)

1.3.2 分支控制的分类

分支控制有如下几类:
1)单分支
2)双分支
3)多分支

1.3.2.1 单分支

· 概念

单分支指只存在一个判断逻辑的情况。即:"等你到了22岁,才允许结婚",言外之意,你没达到此条件,将无法结婚

· 语法

if 条件表达式{ 
 //执行代码块
}

· 流程图

go语言接口布局详解,go语言能用于工业控制吗

· 案例

【案例说明】
请编写程序,在控制台输入年龄,如果输入的年龄小于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两个判断条件的语句。例如:如果明天是晴天,我们就去郊游,否则我们待在家里看电视。
  • 与单分支比较
双分支语句的特点是:一定会执行流程控制语句块的中内容。也就是在双分支逻辑里面,就是做选择题,必须会执行一个代码块。而单分支只会在满足条件后,才会进入到执行语句块,否则就继续执行其它代码内容

go语言接口布局详解,go语言能用于工业控制吗

  • 流程图

go语言接口布局详解,go语言能用于工业控制吗

  • 语法
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
}
  • 流程图

go语言接口布局详解,go语言能用于工业控制吗

  • 案例
【案例说明】
公司需要统计员工的薪资组成结构。按照不同维度来计算员工的薪资等级,规定薪资范围在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)