Go 只有一种循环结构—— for 循环。
基本的 for 循环包含三个由分号分开的组成部分:
初始化语句:在第一次循环执行前被执行
循环条件表达式:每轮迭代开始前被求值
后置语句:每轮迭代后被执行
初始化语句一般是一个短变量声明,这里声明的变量仅在整个 for 循环语句可见。
如果条件表达式的值变为 false,那么迭代将终止。
package main
import(
"fmt"
)
func main(){
sum := 0
for i := 0; i <10; i++ {
sum += 1
}
fmt.Println(sum)
}
【注意】for循环的三个组成部分,不需要括起来(这一点区别于C、java等其他语言)。循环体必须用 { } 括起来。
三个组成部分中的,初始化语句和后置语句是可选的。所以,for循环你也可以写成这样
sum := 0
sum2 := 1
for ; sum < 9; {
sum += 1
sum2 += sum2
}
fmt.Println(sum2)
其实,上面for循环的三个组成部分中,如果只剩下条件表达式了,那么那两个分号也是可以省略的。这就有点像C语言的while循环了。
package main
import(
"fmt"
)
func main(){
sum := 0
sum2 := 1
for sum < 9 {
sum += 1
sum2 += sum2
}
fmt.Println(sum2)
}
如果你连条件表达式也省略了,Go语言也认为是正确的写法。那就是一个死循环。
for{
}
写个简单的例子,因为你需要知道如何挑出死循环,当然是使用break了。
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循环。
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