Go语言入门指南:控制结构(二) | 青训营

56 阅读2分钟

循环语句

如果想要重复执行某些语句,Go 语言中只有 for 结构可以使用。这个 for 结构比其它语言中的更为灵活。

for 循环

基本格式:

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

可以看到 for 后面,可以接三种类型的表达式:

  1. 接一个条件表达式
  2. 接三个表达式
  3. 接一个 range 表达式

for-range 结构

这是 Go 特有的一种的迭代结构,您会发现它在许多情况下都非常有用。它可以迭代任何一个集合(包括数组和 map)。语法上很类似其它语言中的 foreach 语句,但依旧可以获得每次迭代所对应的索引。一般形式为:for ix, val := range coll { }

要注意的是,val 始终为集合中对应索引的值拷贝,因此它一般只具有只读性质,对它所做的任何修改都不会影响到集合中原有的值(译者注:如果 val 为指针,则会产生指针的拷贝,依旧可以修改集合中的原值)。一个字符串是 Unicode 编码的字符(或称之为 rune)集合,因此也可以用它迭代字符串:

for pos, char := range str {
...
}

每个 rune 字符和索引在 for-range 循环中是一一对应的。它能够自动根据 UTF-8 规则识别 Unicode 编码的字符。

循环嵌套

Go 语言允许用户在循环内使用循环。接下来我们将为大家介绍嵌套循环的使用。

语法

以下为 Go 语言嵌套循环的格式:

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

循环控制语句

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

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

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

无限循环

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

实例

package main

import "fmt"

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