5.2、循环语句
在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行语句。一组被重复执行的语句称之为循环体,能否继续重复,决定循环的终止条件。

与其他主流的编程语言不一样。Go语言的循环语句只支持 for 关键字,而不支持 while 和 do-while结构。

4.2、循环语句 - 图1

1、for循环

原始for循环

通过关系表达式 或 逻辑表达式控制循环,语法如下:

  1. for 布尔表达式 {}

无限死循环

  1. for true {
  2. fmt.Println("hello world")
  3. }
  4. // 或者
  5. for {
  6. fmt.Println("hello world")
  7. }

简答循环案例

  1. count := 0 //初始化语句
  2. for count < 100 { // 条件判断
  3. fmt.Println("hello world")
  4. count++ // 步进语句
  5. }

for循环的三要素

将初始化语句、条件判断、步进语句格式固定化的循环方式,本质上和上面的for循环没啥区别。

  1. for init;condition;post {
  2. // 循环体语句
  3. }
  1. init: 初始化语句,一般为赋值表达式,给控制变量赋初始值。
  2. condition:条件判断,一般是关系表达式或者逻辑表达式,循环控制条件。
  3. post: 步进语句,一般为赋值表达式,给控制变量增量或者减量。
  1. for count := 0;count < 101; count++ {
  2. fmt.Println(count)
  3. }
  4. /*
  5. // 步进为2
  6. for count := 0;count < 101; count += 2 {
  7. fmt.Println(count)
  8. }
  9. */

执行流程:
4.2、循环语句 - 图2

遍历for循环

我们有的时候要遍历 字符串 或者 循环遍历数组,这个时候我们用遍历for循环。

  1. // 1. 遍历数组
  2. nameList := [...]string{"sbh", "sgg", "xhz"}
  3. for k, name := range nameList { // k 表示索引值,如果不要 可以用 _ 匿名变量
  4. fmt.Println(k, name)
  5. }
  6. // 输出
  7. 0 sbh
  8. 1 sgg
  9. 2 xhz
  10. // 2. 遍历字符串
  11. name := "sbh"
  12. for _, v := range name {
  13. fmt.Println(string(v))
  14. }
  15. // 输出
  16. s
  17. b
  18. h

2、退出循环

如果想提前结束循环(在不满足结束条件的情况下结束循环),可以用 break 和 continue关键字。

break

当 break 关键字用于 for 循环时,会终止循环而执行整个循环语句后面的代码。break 关键字通常和 if 语句一起使用,即满足某个条件时便跳出循环,继续执行循环语句下面的代码。

  1. for i := 0; i < 10; i++ {
  2. if i == 8 {
  3. break
  4. }
  5. fmt.Println(":", i)
  6. }

4.2、循环语句 - 图3

continue

不同于break退出整个循环,continue指的是退出当次循环。

  1. for i := 0; i < 10; i++ {
  2. if i == 8 {
  3. continue
  4. }
  5. fmt.Println(":", i)
  6. }

4.2、循环语句 - 图4

在一个循环体语句中又包含另一个循环语句,称为循环嵌套。