Go 语言 for(循环)

更新时间 2022-03-31 14:59:37

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书活动

目前, 星球 内第一个项目:全栈前后端分离博客项目,演示地址:http://116.62.199.48/, 1.0 版本已经更新完毕,正在更新 2.0 版本。采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 224 小节,累计 35w+ 字,讲解图:1544 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 1000+ 小伙伴加入,欢迎点击围观

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循环示例代码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 等语句强制退出,则结束语句不会被执行。