04、流程控制
Go语言中最常用的流程控制有if
和for
,而switch
和goto
主要是为了简化代码,降低重复代码而生的结构,属于扩展类的流程控制。
if else(分支结构)
if条件判断的基本写法
1
2
3
4
5
6
7if 表达式1 {
分支1
} else if 表达式2 {
分支2
} else{
分支3
}Go语言规定与
if
匹配的左括号{
必须与if和表达式
放在同一行,{
放在其他位置会触发编译错误。 同理,与else
匹配的{
也必须与else
写在同一行,else
也必须与上一个if
或else if
右边的大括号在同一行。1
2
3
4
5
6
7
8
9//多条件判断
size := 19
if size > 35 {
fmt.Println("大")
} else if size > 18 {
fmt.Println("中")
}else {
fmt.Println("小")
}if条件判断的特殊写法
可以在 if 表达式之前添加一个执行语句,再根据变量值进行判断,定义的age为局部变量,执行完成后即销毁,节省内存开销
1
2
3
4
5
6//if条件判断的特殊写法
if age := 19; i > 18 {
fmt.Println( age, "岁:恭喜你成年了")
}else {
fmt.Println( age, "岁:回家写作业去")
}
for(循环结构)
1 | for 初始语句;条件表达式;结束语句{ |
基本格式
1 | //基本格式 |
变种1(表达式1在for外面定义)
1 | //变种1 |
变种2(表达式3写在for内部)
1 | //变种2 |
死循环
1 | //无限循环 |
for range循环(类似foreach)
1 | // for range循环 |
打印九九乘法表
1 | for i := 1; i <= 9;i ++ { |
switch … case
使用switch
语句可以方便的对大量的值进行条件判断,每个switch
只能有一个default
分支。
1 | a := 5 |
变种一
1 | //定义switch局部变量 |
变种二
一个分支可以有多个值,多个case值中间使用英文逗号分隔。
1 | //定义一个case多个判断条件 |
变种三
1 | //case加表达式,判断条件放到case,switch外声明变量 |
变种四
1 | //case加表达式,switch局部变量 |
fallthrough
语法可以执行满足条件的case的下一个case,是为了兼容C语言中的case设计的。
1 | //fallthrough |
goto(跳转到指定标签)
goto
语句通过标签进行代码间的无条件跳转。goto
语句可以在快速跳出循环、避免重复退出上有一定的帮助。Go语言中使用goto
语句能简化一些代码的实现过程。
常用方法:
1 | //常用break跳出双层for循环写法 |
goto + lable跳出循环
1 | //goto + TABLE跳出for循环 |
break(跳出循环)
reak
语句可以结束for
、switch
和select
的代码块。
break
语句还可以在语句后面添加标签,表示退出某个标签对应的代码块,标签要求必须定义在对应的for
、switch
和 select
的代码块上
1 | //break + TABLE跳出for循环 |
continue(继续下次循环)
continue
语句可以结束当前循环,开始下一次的循环迭代过程,仅限在for
循环内使用。
在 continue
语句后添加标签时,表示开始标签对应的循环。
1 | //continue + TABLE跳出for循环 |