1. 分支控制的基本介绍
分支控制就是让程序有选择执行。有下面三种形式
1) 单分支
<1> 基本语法:
package main
import (
"fmt"
)
func main() {
// 单分支控制
// 编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出你年龄大于18,要对自己的行为负责!
var age int
fmt.Println("请输入你的年龄")
fmt.Scanln(&age)
if age > 18 {
fmt.Println("你的年龄大于18,要对自己的行为负责")
}
}
单分支对应的流程图
单分支的细节说明:
如果只有一条语句,在golang中也必须写上大括号:“{}”
2) 双分支
基本语法:
应用案例:
package main
import (
"fmt"
)
func main() {
var age int
// 2. 双分支控制
fmt.Scanln(&age)
if age > 18 {
fmt.Println("你的年龄大于18,要对自己的行为负责了")
} else {
fmt.Println("你的年龄不大,这次放过你了")
}
}
双分支流程图
对双分支的总结:
1. 从上图看,条件表达式: age > 18
2. 执行代码块 1 ===> fmt.Println(" 你的年龄大于18")
3. 执行代码块 2 ===> fmt.Println("你的年龄不大")
4. 强调一下: 双分支只会执行其中一个分支
*案例: 单分支和双分支
// 1)对下列代码,若有输出,指出输出结果
var x int = 4
var y int = 1
if x>2 {
if y > 2 {
fmt.Println(x + y)
}
fmt.Println("atguigu")
} else {
fmt.Println("x is =",x)
}
// 输出结果是 atguigu
// 2)对下列代码,若有输出,指输出结果
var x int = 4
if x > 2
fmt.Println("ok")
else
fmt.Println("hello")
// 编译错误,原因:没有大括号"{}",一条语句也要加上大括号
// 3) 对下列代码,若有输出,指出输出结果。
var x int = 4
if x > 2 {
fmt.Println("ok")
}
else {
fmt.Println("hello")
}
// 编译错误,原因是 else不能换行
// 4) 对下列代码,若有输出,指出输出结果
var x int = 4
if (x > 2) {
fmt.Println("ok")
} else {
fmt.Println("hello")
}
// 正确,输出ok
// 虽然正确,但是要求 if(x > 2) 写成 if x > 2 {...}
3) 多分支控制
基本语法:
对上面基本语法的说明
1)多分支的判断流程如下:
<1> 先判断条件表达式1是否成立,如果为真,就执行代码块1
<2> 如果条件表达式1为假,判断条件表达式2是否成立,如果条件表达式2为真,就执行代码块2。
<3> 以此类推
<4> 如果所有的条件表达式不成立,则执行else的语句块
2)else 不是必须的
3)多分支只能由一个执行入口
流程图如下:
多分支案例:
// 5. 多分支案例演示
// 岳小鹏参加Golang考试,他和父亲岳不群达成承诺:
// 如果:
// 成绩为100分时,奖励一辆BMW
// 成绩为(80,99)时,奖励一台iphone7plus
// 当成绩为(60,80)时,奖励一台iPad
// 其它时,什么奖励也没有
// 请从键盘输入岳小鹏的期末成绩,并加以判断
var grade int32
fmt.Println("请输入岳小鹏的成绩:")
fmt.Scanln(&grade)
if grade == 100 {
fmt.Println("奖励一辆BMW")
} else if grade > 80 && grade <= 99 {
fmt.Println("奖励一台iphone7plus")
} else if grade >= 60 && grade <= 80 {
fmt.Println("奖励一台iPad")
} else {
fmt.Println("什么奖励也没有")
}
// 使用陷阱...只会输出ok
var n int = 10
if n > 9 {
fmt.Println("ok1")
} else if n > 6 {
fmt.Println("ok2")
} else if n > 3 {
fmt.Println("ok3")
} else {
fmt.Println("ok4")
}
使用陷阱