吾八哥学Golang(五):Golang里的流程控制-循环语句
在Golang里循环语句只支持for关键字,而不支持其他开发语言支持的while,do...while,repeat...until这些,Golang里的循环语句的写法和C++里非常相似,但比C++里应该更简洁,for后的语句不需要括号,如下实例:
package main
import "fmt"
func main() {
for i:=1; i<=10; i++ {
fmt.Println(i)
}
}以上语句执行则会输出1-10。
Golang里的for循环语句for后支持多重赋值,如下实例:
package main
import "fmt"
func main() {
arr := []int{1, 2, 3, 4, 5, 6}
for i, j := 0, len(arr) -1; i < j; i, j = i + 1, j - 1 {
arr[i], arr[j] = arr[j], arr[i]
}
fmt.Println(arr)
}以上语句即可将arr里的数据倒序输出。
Golang里的循环语句for后面可以不写表达式,即无限循环语句,根据某个条件开选择性中断或者不中断。看如下例子:
package main
import "fmt"
func main() {
i := 0
for {
i++
fmt.Println(i)
if i > 10 {
fmt.Println("i>10,中断")
break
}
}
}以上代码执行到i等于11的时候则会中断循环。
在Golang里的循环语句里同样支持continue和break,但Golang里的循环语句的break关键字有一个更特别的玩法,就是可以指定中断某个标签处的循环,看如下例子:
package main
import (
"fmt"
)
func main() {
ILoop:
for i := 0; i < 10; i++ {
JLoop:
for j := 0; j < 5 ; j++ {
if i == 4 {
fmt.Println("中断ILoop循环")
break ILoop
}
if j == 3 {
fmt.Println("中断JLoop循环")
break JLoop
}
fmt.Println(i, j)
}
}
}以上语句逻辑是i等于4的时候中断外部的ILoop循环,j等于3的时候中断JLoop循环,嵌套循环语句先执行的是子循环,所以执行结果为:
0 0 0 1 0 2 中断JLoop循环 1 0 1 1 1 2 中断JLoop循环 2 0 2 1 2 2 中断JLoop循环 3 0 3 1 3 2 中断JLoop循环 中断ILoop循环
最后简单总结下:
Golang里的循环语句只支持for关键字
for后的语句支持多重赋值表达式
for后面的表达式可以不写,而通过某种条件来中断
Golang里的循环语句的break关键字支持中断指定的某个循环