Go - 18 Go 流程控制
在流程控制中,程序运行的流程控制表示决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句
顺序控制:向前引用
分支控制:让程序有选择的执行,分为:
单分支 if 表达式 {}
双分支 if 表达式 {} else {};只会执行其中的一部分;
多分支
嵌套分支(不要嵌套太多,最多不超过3层)
switch分支:每一个case分支都是唯一的,从上到下逐一测试,知道匹配为止;匹配项后面不需要加break;
golang 中的case后的表达式可以有多个,且用逗号隔开;
细节注意:
1)case后是一个表达式(即:常量值,变量,一个有返回值函数,还可以运算);
2)switch 后数值类型和 case 后的数值类型必须保持一致;
3)case后的表达式可以是多个,且用逗号隔开,只要有一个满足就会执行,都不满足进行下一个case;
4)case后如果是常量(字面量)则不可以重复;
5)default 不是必须的,都不满足就是不做任何操作;
6)switch 后也可以不带表达式,用法类似 if -- else 分支使用;
7)switch穿透 fallthrough,默认只能穿透一层
8)Type switch
swith 和 if 的比较
1.如果判断的具体数值不多,而且符合整数,浮点数,字符,字符串,这几种类型,建议使用swith语句,简洁高效;
2.其他情况,对区间判断和结果为bool类型的判断,使用if,if使用的范围更广;
for循环控制:
就是让我们的代码循环的执行;
基本语法:
for 循环变量初始化; 循环条件; 循环变量迭代 {
循环操作(语句)
}
语法格式说明:
有四个要素:
执行顺序:循环变量初始化-->循环条件判断-->如果循环条件为真就执行循环操作--->循环变量迭代-->反复执行2,3,4直到循环条件为假退出for循环;
注意事项:
1.循环条件是返回一个布尔值的表达式;
2.for循环的第二种使用方式:
for 循环判断条件 {
循环执行语句
}
3.for-range 用来遍历字符串和数组;
如果字符串中有中文,传统遍历会出现乱码,因为传统遍历按照字节遍历,而一个汉字在utf8编码是对应3个字节(解决方案:直接转为切片类型进行遍历即可);
而for-range 是按字符遍历的所以遇到中文不会出现乱码
Go语言中没有while和do...while 语法;
两者的区别:while: 先判断后执行; do...while: 先执行后判断;
break : 就是跳出for循环