第5章 程序流程控制

5.1 程序流程控制介绍

在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的主要有三大流程控制语句。

  1. 顺序控制
  2. 分支控制
  3. 循环控制

5.2 顺序控制

程序从上到下逐行地执行,中间没有任何判断和跳转。

5.2.1 顺序控制的一个流程图

5.3 分支控制

5.3.1 分支控制的基本介绍

分支控制就是让程序有选择的执行。

  1. 单分支
  2. 双分支
  3. 多分支

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循环的基础语法


  • 循环说明
  1. 执行循环变量初始化,比如 i := 1
  2. 执行循环条件, 比如 i <= 10
  3. 如果循环条件为真,就执行循环操作 :比如 fmt.Println(“....”)
  4. 执行循环变量迭代 , 比如 i++
  5. 反复执行 2, 3, 4 步骤,直到 循环条件为 False ,就退出 for 循环

5.5.3 for循环执行流程分析

  • for循环流程图

5.5.4 for循环注意事项和细节讨论

1)循环条件是返回一个布尔值的表达式

2)for 循环的第二种使用方式




3)for 循环的第三种使用方式

注意:上面的写法等价 for ; ; {} 是一个无限循环, 通常需要配合 break 语句使用


Golang 提供 for-range 的方式,可以方便遍历字符串和数组,案例说明如何遍历字符串。

  1. 注意事项
  • 如果我们的字符串中含有中文,那么传统的遍历方式,就是错误的,会出现乱码,原因是传统的字符串遍历是按照字节来遍历的,而一个汉字在utf8编码是对应3个字节。解决方式就是切片。

对应for-range遍历方式而言,是按照字符方式遍历。因此如果有字符串有中文,也是 ok。


5.6 while 和 do..while 的实现

Go语言没有while和do…while的语法,可以通过for循环来实现其使用效果。

5.6.1while循环的实现


  • 介绍说明
  1. for 循环时一个无限循环
  2. 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函数,或者说中止程序