教程 > Go 教程 > Go 基础 阅读:323

Go 语言循环语句 - For 循环 和 嵌套循环

可能有一种情况,当您需要多次执行一个代码块时。通常,语句是按顺序执行的:首先执行函数中的第一条语句,然后是第二条,依此类推。

编程语言提供了允许更复杂的执行路径的各种控制结构。

循环语句允许我们多次执行一个语句或一组语句,以下是大多数编程语言中循环语句的一般形式

循环流程图

Go 编程语言提供了以下类型的循环来处理循环需求

  • for 循环 - 重复执行语句块
  • 循环嵌套 - 在 for 循环中嵌套一个或多个 for 循环

for 循环

for 循环是一个循环控制结构,可以执行指定次数的循环。

语法

Go 编程语言中for循环的语法是 -

for [condition |  ( init; condition; increment ) | range] {
   statement(s);
}

for循环中的控制流程如下

  • 如果 condition 可用,则只要条件为真,for 循环就会执行。
  • 如果存在( init; condition; increment )的for子句,则
    • 所述初始化步骤首先被执行,并且只有一次。此步骤允许您声明和初始化任何循环控制变量。只要出现分号,就不需要在此处放置语句。
    • 接下来,评估条件。如果为真,则执行循环体。如果为 false,则循环体不执行,控制流跳转到for循环之后的下一条语句。
    • 在 for 循环体执行后,控制流跳回到increment语句。此语句允许您更新任何循环控制变量。该语句可以留空,只要在条件后出现分号即可。
    • 现在再次评估条件。如果为真,则循环执行并且过程自身重复(循环体,然后递增步骤,然后再次执行条件)。在条件变为假之后,for 循环终止。
  • 如果 range 可用,则对范围内的每个项目执行 for 循环。

for 循环流程图如下

Go 语言For循环流程图

示例

package main

import "fmt"

func main() {
   var b int = 15
   var a int
   numbers := [6]int{1, 2, 3, 5} 

   for a := 0; a < 10; a++ {
      fmt.Printf("value of a: %d\n", a)
   }
   for a < b {
      a++
      fmt.Printf("value of a: %d\n", a)
   }
   for i,x:= range numbers {
      fmt.Printf("value of x = %d at %d\n", x,i)
   }   
}

运行示例

上述代码编译执行结果如下

value of a: 0
value of a: 1
value of a: 2
value of a: 3
value of a: 4
value of a: 5
value of a: 6
value of a: 7
value of a: 8
value of a: 9
value of a: 1
value of a: 2
value of a: 3
value of a: 4
value of a: 5
value of a: 6
value of a: 7
value of a: 8
value of a: 9
value of a: 10
value of a: 11
value of a: 12
value of a: 13
value of a: 14
value of a: 15
value of x = 1 at 0
value of x = 2 at 1
value of x = 3 at 2
value of x = 5 at 3
value of x = 0 at 4
value of x = 0 at 5

嵌套循环

Go 编程语言允许在另一个循环中使用一个循环。

语法

Go 中嵌套 for 循环语句的语法如下:

for [condition |  ( init; condition; increment ) | Range] {
   for [condition |  ( init; condition; increment ) | Range] {
      statement(s);
   }
   statement(s);
}

示例

以下示例例使用循环嵌套来输出 2 到 100 间的素数:

package main

import "fmt"

func main() {
   /* 定义局部变量 */
   var i, j int

   for i=2; i < 100; i++ {
      for j=2; j <= (i/j); j++ {
         if(i%j==0) {
            break; // 如果发现因子,则不是素数
         }
      }
      if(j > (i/j)) {
         fmt.Printf("%d  是素数\n", i);
      }
   }  
}

运行示例

上述代码编译执行结果如下

2  是素数
3  是素数
5  是素数
7  是素数
11  是素数
13  是素数
17  是素数
19  是素数
23  是素数
29  是素数
31  是素数
37  是素数
41  是素数
43  是素数
47  是素数
53  是素数
59  是素数
61  是素数
67  是素数
71  是素数
73  是素数
79  是素数
83  是素数
89  是素数
97  是素数

循环控制语句

循环控制语句可以控制循环体内语句的执行过程。

GO 语言支持以下几种循环控制语句:

控制语句 描述
break 语句 经常用于中断当前 for 循环或跳出 switch 语句
continue 语句 跳过当前循环的剩余语句,然后继续进行下一轮循环。
goto 语句 将控制转移到被标记的语句。

无限循环

如果循环中条件语句永远不为 false 则会进行无限循环,我们可以通过 for 循环语句中只设置一个条件表达式来执行无限循环:

示例

package main

import "fmt"

func main() {
    for true  {
        fmt.Printf("这是无限循环。\n");
    }
}

当条件表达式不存在时,它被假定为真。您可能有一个初始化和增量表达式,但 C 程序员更常使用 for(;;) 构造来表示无限循环。

注意- 我们可以通过按 Ctrl + C 键终止无限循环。

查看笔记

扫码一下
查看教程更方便