介绍
在程序中,程序运行的流程控制决定程序是如何执行的,主要有三大流程控制语句。
1) 顺序控制
2) 分支控制
3) 循环控制
一、顺序控制
顺序控制介绍
程序从上到下逐行地执行,中间没有任何判断和跳转。
二、 分支控制
让程序有选择的的执行,分支控制有三种:
1) 单分支
2) 双分支
3) 多分支
单分支
基本语法
if 条件表达式 {
执行代码块
}
说明: 当条件表达式为ture时,就会执行{ }的代码。注意{ }是必须有的。
var age int
fmt.Println(" please input your age")
fmt.Scanln(&age)
if age > 18 {
fmt.Println(" you are old man")
}
细节说明
if中的条件判断语句里面允许声明一个变量,这个变量
的作用域只能在该条件逻辑块内,其他地方就不起作用了
if age := 19; age > 18 {
fmt.Println(" you are old man")
}
双分支
基本语法
if 条件表达式 {
执行代码块1
}else {
执行代码块2
}
说明: 当条件表达式成立,即执行代码块1,否则执行代码块2。{ }也是必须有的。
多分支
基本语法
if 条件表达式1 {
执行代码块1
} else if 条件表达式2 {
执行代码块2
}
..........
else {
执行代码块n
}
switch分支结构
基本介绍
1) switch 语句用于基于不同条件执行不同动作,每一个case 分支都是唯一的,从
上到下逐一测试,直到匹配为止。
2) 匹配项后面也不需要再加break
基本语法
switch 表达式 {
case 表达式1,表达式2,... :
语句块1
case 表达式3,表达式4, ...... :
语句块2
//这里可以有多个case语句
default:
语句块
}
switch细节
1) case后是一个表达式(即: 常量值、变量、一个有返回值的函数等都可以)
2) case后的 各个表达式的值的数据类型,必须和switch 的表达式数据类型一致
3) case后面可以带多个表达式, 使用逗号间隔。比如case表达式1,表达式2.
4) case后 面的表达式加果是常量值(字面量).则要求不能重复
5) case后 面不需要带break ,程序匹配到一个case后就会执行对应的代码块。然后退出
switch.如果一个都匹配不到,则执行default。
6) default 语句不是必须的.
7)switch 后也可以不带表达式,类似多个if--else分支来使用。
var num int = 9
switch{
case num==6 :
fmt.Println(" you input number 6")
case num == 9 :
fmt.Println(" hello my friend")
default:
fmt.Println(" you are get out")
}
8) switch 后也可以直接声明/定义一个变量,分号结束,不推荐。
9) switch 穿透fallthrough,如果在case语句块后增加fallthroungh,则会继续执行下一个case,
也叫switch穿透。
var num int = 9
switch num {
case 6 :
fmt.Println(" you input number 6")
case 9 :
fmt.Println(" hello my friend")
fallthrough //默认只能穿透一层
case 11 :
fmt.Println(" you are you are")
default:
fmt.Println(" you are get out")
}
10) Type switch: switch 语句还可以被用于type-switch来判断某个interface变量中实际指
向的变量类型.
switch和 if 的比较
1) 如果判断的具体数值不多。而且符合整数、浮点数、字符,字符串这几种类型。建仪使用swrich
语句,简洁高效。
2) 其他情况 :对区间判断和结果为bool类型的判断,使用if, if 的使用范圈更广。