前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >厚土Go学习笔记 | 11. for循环 go语言只有for循环

厚土Go学习笔记 | 11. for循环 go语言只有for循环

作者头像
李海彬
发布2018-03-28 11:30:27
6340
发布2018-03-28 11:30:27
举报
文章被收录于专栏:Golang语言社区Golang语言社区

Go 只有一种循环结构—— for 循环。

基本的 for 循环包含三个由分号分开的组成部分:

  • 初始化语句:在第一次循环执行前被执行
  • 循环条件表达式:每轮迭代开始前被求值
  • 后置语句:每轮迭代后被执行

初始化语句一般是一个短变量声明,这里声明的变量仅在整个 for 循环语句可见。

如果条件表达式的值变为 false,那么迭代将终止。

代码语言:javascript
复制
package main

import (
    "fmt"
)

func main() {
    sum := 0
    for i := 0; i <10; i++ {
        sum += 1
    }
    fmt.Println(sum)
}

【注意】for循环的三个组成部分,不需要括起来(这一点区别于C、java等其他语言)。循环体必须用 { } 括起来。

三个组成部分中的,初始化语句和后置语句是可选的。所以,for循环你也可以写成这样

代码语言:javascript
复制
sum := 0
sum2 := 1

for ; sum < 9;  {
    sum += 1
    sum2 += sum2
}

fmt.Println(sum2)

其实,上面for循环的三个组成部分中,如果只剩下条件表达式了,那么那两个分号也是可以省略的。这就有点像C语言的while循环了。

代码语言:javascript
复制
package main

import (
    "fmt"
)

func main() {
    sum := 0
    sum2 := 1
    for sum < 9  {
        sum += 1
        sum2 += sum2
    }
    fmt.Println(sum2)
}

如果你连条件表达式也省略了,Go语言也认为是正确的写法。那就是一个死循环。

代码语言:javascript
复制
for {
}

写个简单的例子,因为你需要知道如何挑出死循环,当然是使用break了。

代码语言:javascript
复制
package main

import "fmt"

func main() {
    i := 0
    for {
        i++
        fmt.Println("Now i is", i)
        if i > 3 {
            break
        }
        fmt.Println("Behind if i is", i)
    }
}

执行的结果是这样的,显然在“Behid if i is 4”打印之前,就跳出了for循环。

代码语言:javascript
复制
Now i is 1
Behind if i is 1
Now i is 2
Behind if i is 2
Now i is 3
Behind if i is 3
Now i is 4
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-11-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档