前言
GO语言中没有while循环,只有for循环。
GO语言有break、default 、func、select、case、defer、go、map、else、goto、for、if、var等25个关键字。
语法
1.常规写法
for i := 1; i <= 5; i++ {
fmt.Println(i)
}
2.变形写法
i := 1;
for i <= 5 {
fmt.Println(i)
i++
}
3.省略条件语句,变成while true
for {
fmt.Println("Hello World")
}
4.嵌套for循环
for i := 1; i <= 5; i++ {
for j := 1; j <= 5; j++ {
fmt.Println(i, j)
}
}
循环控制-break、continue、goto
break和continue
break和continue都是结束循环语句
- break是用来结束整个循环语句
- continue是用来结束此次循环居于
//当i=3时,结束for循环
for i := 1; i <= 5; i++ {
if i == 3 {
break
}
}
//当i=3时,结束此次循环,开始下一次循环
for i := 1; i <= 5; i++ {
if i == 3 {
continue
}
}
跳出外部循环
多重循环时,内部循环控制跳出外部循环,可以使用break 加上外部循环的标签块。
除了break、continue外,goto关键字也可以跳出循环。
package main
import (
"fmt"
)
func main() {
fmt.Println("---break跳出外部循环---")
OutLoop1:
for i := 1; i <= 3; i++ {
for j := 1; j <= 3; j++ {
if j == 3 {
break OutLoop1
}
fmt.Println([]int{i, j})
}
}
fmt.Println("---continue跳出外部循环---")
OutLoop2:
for i := 1; i <= 3; i++ {
for j := 1; j <= 3; j++ {
if j == 3 {
continue OutLoop2
}
fmt.Println([]int{i, j})
}
}
}
输出
for ... range ...
for range每次获取一对值,下标和数值。for只能通过下标获取元素。
for range可以遍历切片、数组、字符串、Map、Channel
建议不需要后去下标时舍弃下标,提高性能
语法
for index, value := range arrayTest {
...
}
需要注意的是:
如“for index, value := range arrayTest {...}”遍历数组时。在for循环中直接对value进行修改或者赋值,实际数组中的元素不会发生改变。
原因是for range获取的value是将对象中的元素copy了一份。所以如果实际需要修改元素时,可以使用下标找到对应元素,再进行修改。