条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为 false 的情况在执行另外的语句。
分支控制就是让程序有选择执行。有下面三种形式:
1)单分支
2)双分支
3)多分支
下图展示了程序语言中条件语句的结构:
1、if单分支控制
if 语句由布尔表达式后紧跟一个或多个语句组成。
语法:
if 布尔表达式 {
/* 在布尔表达式为 true 时执行 */
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| package main import ( "fmt" )
func main() {
var age int fmt.Println("请输入年龄:") fmt.Scanln(&age)
if age > 18 { fmt.Println("你已经大于18岁了,可以自力更生了") }
}
|
2、if..else分支控制
语法:
if 条件表达式{
执行代码块1
} else{
执行代码块2
}
流程图:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| package main
import "fmt"
func main() { var age int fmt.Println("请输入年龄:") fmt.Scanln(&age) if age >= 18 { fmt.Println("已成年") } else { fmt.Println("你还未成年") } }
|
3、if多分支控制
语法:
if 条件表达式1{
执行代码块1
}else if 条件表达式2{
执行代码块2
}
…
else{
执行代码块n
}
多分支的判断流程如下:
(1) 先判断条件表达式1是否成立,如果为真,就执行代码块 1
(2) 如果条件表达式 1 为假,就去判断条件表达式 2 是否成立, 如果条件表达式 2 为真, 就执行代码块 2
(3) 依次类推.
(4) 如果所有的条件表达式不成立,则执行 else 的语句块,else 不是必须的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| package main
import "fmt"
func main() { var score int fmt.Println("请输入成绩:") fmt.Scanln(&score) if score == 100 { fmt.Println("满分") } else if score > 80 && score <= 99 { fmt.Println("优秀") } else if score >= 60 && score <= 80 { fmt.Println("及格") } else if score >= 0 && score < 60 { fmt.Println("不及格") } else { fmt.Println("成绩无效") } }
|
4、if嵌套分支
在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层分支,外面的分支结构称为外层分支。嵌套分支不宜过多,建议控制在2-3层。
语法:
if 条件表达式{
if 条件表达式{
执行代码块1
}else{
执行代码块2
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| package main
import ( "fmt" )
func main() { var second float64 fmt.Println("请输入秒数") fmt.Scanln(&second) if second <= 10 { var gender string fmt.Println("请输入性别") fmt.Scanln(&gender) if gender == "男" { fmt.Println("进入决赛的男子组") } else { fmt.Println("进入决赛的女子组") } } else { fmt.Println("你被淘汰了...") } }
|
5、if分支综合练习
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| package main
import "fmt"
func main() { var month int var age int var price float64 = 200.0 fmt.Println("请输入月份:") fmt.Scanln(&month) if month >= 6 && month <= 10 { fmt.Println("请输入年龄:") fmt.Scanln(&age) if age >= 18 && age <= 70 { fmt.Printf("%v月 年龄%v 票价%v", month, age, price) } if age > 0 && age < 18 { fmt.Printf("%v月 年龄%v 票价%v", month, age, price/5) } if age > 70 { fmt.Printf("%v月 年龄%v 票价%v", month, age, price/10) } } if month >= 1 && month < 6 || month > 10 && month <= 12 { fmt.Println("请输入年龄:") fmt.Scanln(&age) if age >= 18 && age <= 70 { fmt.Printf("%v月 年龄%v 票价%v", month, age, price/2) } else { fmt.Printf("%v月 年龄%v 票价%v", month, age, price/20) } } }
|