吾八哥学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关键字支持中断指定的某个循环