Go 语言 for(循环)

发布于: 2020-11-24 19:35:47 作者: 犬小哈 最后修订时间: 2020-11-25 12:24:15

Go 语言中,循环需要使用关键字 for 来完成,格式如下:

for 初始语句;条件表达式;结束语句 {
  循环体代码
}

for 循环会不停地进行循环,直到条件表达式返回 false 才推出循环,即执行 for 循环 "}" 后面的代码。

一、for 循环 - 初始语句

初始语句是第一次执行循环前执行的语句,通常情况下,我们会通过它来执行变量初始化操作。

注意: 通过初始语句声明的变量,作用域局限在 for 循环内。

代码如下:

for i := 0; i < 100; i++ {
  fmt.Println("犬小哈教程 quanxiaoha.com")
}

上面代码打印了一百次 犬小哈教程 quanxiaoha.com

另外,初始语句还可以忽略不写,但是初始语句后面的分号必须写,代码如下:

i := 0
for ; i < 100; i++ {
  fmt.Println("犬小哈教程 quanxiaoha.com")
}

上面的代码中将 i 放在了 for 循环前面初始化,这时 i 的作用域不止作用在 for 循环内。

二、for 循环 - 条件表达式

每次在循环前,会计算条件表达式的值,如果结果为 true, 则继续循环;否则将结束循环。

注意:条件表达式同样可以忽略不写,若不写,由于没有终止条件,则会陷入无限死循环,代码如下:

i := 0
for ; ; i++ {
  if i == 10 {
    break
  }

  fmt.Println("犬小哈教程 quanxiaoha.com")
}

上面代码打印 10 次: 犬小哈教程 quanxiaoha.com

图示:

go语言for循环示例代码

不是说死循环吗?怎么只打印了 10 呢?

之所以只打印 10 次,因为循环体中有 if 判断语句,当 i 等于 10 时,执行了 break 结束循环的操作。

2.1 更美观的死循环写法

还有死循环的写法更具有可读性,代码如下:

i := 0
for {
  if i == 10 {
    break
  }

  fmt.Println("犬小哈教程 quanxiaoha.com")
}

可以看到, for 后面直接忽略了初始语句、条件表达式以及结束语句。

2.2 只有一个条件的 for 循环

上面的代码还可以进一步简化,可以将 if 判断整合到 for 循环中,代码如下:

i := 0
for i <= 10 {
  i++
  fmt.Println("犬小哈教程 quanxiaoha.com")
}

将条件 i == 10 条件改成了 i <= 10, 并整合到 for 后面,若满足条件则会打印控制台,且每次对 i 执行自增加一操作。

三、for 循环 - 结束语句

在结束每次循环前被执行的语句。若循环被 breakgotoreturnpanic 等语句强制退出,则结束语句不会被执行。