第5章 程序流程控制
5.1 程序流程控制介绍
在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的主要有三大流程控制语句。
- 顺序控制
- 分支控制
- 循环控制
5.2 顺序控制
程序从上到下逐行地执行,中间没有任何判断和跳转。
5.2.1 顺序控制的一个流程图
5.3 分支控制
5.3.1 分支控制的基本介绍
分支控制就是让程序有选择的执行。
- 单分支
- 双分支
- 多分支
5.3.2 单分支控制
- 单分支的流程图
流程图可以用图形方式来更加清晰的描述程序执行的流程。
- 单分支细节控制
5.3.3 双分支控制
- 基础语法
- 双分支的流程图的分析
5.3.3 多分支控制
- 基础语法
- 多分支流程图
5.3.4 嵌套分支
- 基本语法
5.4 switch分支控制
5.4.1 基础的介绍
1)switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上到下逐一测试,直到匹配为止。
2)匹配项后面不需要添加break
5.4.2 基础语法
5.4.3 switch流程图
- 说明和总结
1)switch 的执行的流程是,先执行表达式,得到值,然后和 case 的表达式进行比较,如果相等,就匹配到,然后执行对应的 case 的语句块,然后退出 switch 控制。
2)如果 switch 的表达式的值没有和任何的 case 的表达式匹配成功,则执行 default 的语句块。执行尚硅谷 Go 语言课程后退出 switch 的控制.
3)golang 的 case 后的表达式可以有多个,使用 逗号 间隔.
4)golang 中的 case 语句块不需要写 break , 因为默认会有,即在默认情况下,当程序执行完 case 语句块后,就直接退出该 switch 控制结构。
5.5 for循环控制
5.5.1 基本介绍
听其名而知其意。就是让我们的一段代码循环的执行
5.5.2 for循环的基础语法
- 循环说明
- 执行循环变量初始化,比如 i := 1
- 执行循环条件, 比如 i <= 10
- 如果循环条件为真,就执行循环操作 :比如 fmt.Println(“....”)
- 执行循环变量迭代 , 比如 i++
- 反复执行 2, 3, 4 步骤,直到 循环条件为 False ,就退出 for 循环
5.5.3 for循环执行流程分析
- for循环流程图
5.5.4 for循环注意事项和细节讨论
1)循环条件是返回一个布尔值的表达式
2)for 循环的第二种使用方式
3)for 循环的第三种使用方式
注意:上面的写法等价 for ; ; {} 是一个无限循环, 通常需要配合 break 语句使用
Golang 提供 for-range 的方式,可以方便遍历字符串和数组,案例说明如何遍历字符串。
- 注意事项
- 如果我们的字符串中含有中文,那么传统的遍历方式,就是错误的,会出现乱码,原因是传统的字符串遍历是按照字节来遍历的,而一个汉字在utf8编码是对应3个字节。解决方式就是切片。
对应for-range遍历方式而言,是按照字符方式遍历。因此如果有字符串有中文,也是 ok。
5.6 while 和 do..while 的实现
Go语言没有while和do…while的语法,可以通过for循环来实现其使用效果。
5.6.1while循环的实现
- 介绍说明
- for 循环时一个无限循环
- break语句就是跳出for循环
- 简单实现如下:
输出:
5.6.2 do … while循环的实现
- 简单说明:
- 上面的循环是先执行,在判断,因此至少执行一次
5.7 多重循环控制
5.7.1 基本说明
1) 将一个循环放在另一个循环体内,就形成了嵌套循环。在外边的 for 称为外层循环在里面的 for循环称为内层循环。【建议一般使用两层,最多不要超过 3 层】
2) 实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为 false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环。
3) 外层循环次数为 m 次,内层为 n 次,则内层循环体实际上需要执行 m*n 次
5.8 跳转控制语句continue
5.8.1 基本说明
continue 语句用于结束本次循环,继续执行下一次循环。
continue 语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环 , 这个和前面的 break 标签的使用的规则一样.
5.9 跳转控制语句-goto
5.9.1 基本说明
1) Go 语言的 goto 语句可以无条件地转移到程序中指定的行。
2) goto 语句通常与条件语句配合使用。可用来实现条件转移,跳出循环体等功能
3) 在 Go 程序设计中一般不主张使用 goto 语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难
5.10 跳转控制语句-return
5.10.1 基本说明
1)如果 return 是在普通的函数,则表示跳出该函数,即不再执行函数中 return 后面代码,也可以理解成终止函数。
2)如果return在main 函数中,表示中止main函数,或者说中止程序