Go语言流程控制(六)
go语言的流程控制主要有if , for和switch。
if else(分支结构)
go语言的if判断:
func main() { score:=65 if score>=90{ fmt.Println("A") }else if score>=80{ fmt.Println("B") }else{ fmt.Println("C") } }
需要注意的两点:
1. 表达式不可以使用 ()
2. 起始花括号必须紧跟表达式后面,不可以另起一行
除此之外,if 判断写法还有另一种写法:
func main() { if score:=65; score>=90{ fmt.Println("A") }else if score>=80{ fmt.Println("B") }else{ fmt.Println("C") }
fmt.Println(score) // 报错,获取不到score }
这种写法是把变量的定义写在表达式里了,这样写的作用是把变量定义在了局部。
for(循环结构)
for循环结构与其他语言也差不多:
for 初始语句;条件表达式;结束语句{ 循环体语句 }
需要注意:
1. for后面不可以加 ()
2.花括号与if中的一样,不可以另起一行
例子:
func main() { for i:=0;i<10;i++{ fmt.Println(i) } }
for循环的初始语句可以被忽略,但是初始语句后的分号必须要写,例如:
func main() { i:=0 for ;i<10;i++{ fmt.Println(i) } }
for循环的初始语句和结束语句都可以省略,例如:
func main() { i:=0 for i<10{ fmt.Println(i) i++ } }
switch case
基本用法:
func main() { week:=3 switch week { case 0: fmt.Println("周日") case 1: fmt.Println("周一") case 2: fmt.Println("周二") case 3: fmt.Println("周三") case 4: fmt.Println("周四") case 5: fmt.Println("周五") default: fmt.Println("周六") } }
每个switch只能有一个default
一个分支可以有多个值,多个case值中间使用英文逗号分隔:
func main() { num:=1 switch num { case 1,3,5,7,9: fmt.Println("这是奇数") case 2,4,6,8,0: fmt.Println("这是偶数") default: fmt.Println(num) } }
也可以把赋值放在switch里:
func main() { switch num:=1; num { case 1,3,5,7,9: fmt.Println("这是奇数") case 2,4,6,8,0: fmt.Println("这是偶数") default: fmt.Println(num) } }
分支还可以使用表达式,这时候switch语句后面不需要再跟判断变量。例如:
func main() { score:=90 switch { case score>=90: fmt.Println("优秀") case score>=80: fmt.Println("良好") case score>=60: fmt.Println("及格") } }
fallthrough 可以执行满足条件的case的下一个case:
func main() { b:=true switch b { case true: fmt.Println(1) fallthrough case false: fmt.Println(2) } }
如上,不加 fallthrough 只打印 1,加上 fallthrough 打印 1 和 2