Go 语言 for(循环)

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

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

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 50w+ 字,讲解图 2200+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 1700+ 小伙伴加入学习 ,欢迎点击围观

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