Go For 循环
for
循环会循环执行一段代码指定的次数。
Go 语言中唯一的循环语句是 for
循环。
Go For 循环
如果您想反复运行相同的代码,每次使用不同的值,循环会非常方便。
循环的每次执行称为一次迭代。
for
循环最多可以包含三个语句
语法
for 语句1; 语句2; 语句3 {
// 每次迭代要执行的代码
}
语句1 初始化循环计数器的值。
语句2 对每次循环迭代进行求值。如果求值为 TRUE,则循环继续。如果求值为 FALSE,则循环结束。
语句3 增加循环计数器的值。
注意: 这些语句不必作为循环的参数出现。但是,它们必须以某种形式出现在代码中。
for 循环示例
示例 1
此示例将打印数字 0 到 4:
package main
import ("fmt")
func main() {
for i:=0; i < 5; i++ {
fmt.Println(i)
}
}
结果
0
1
2
3
4
示例 1 解释
- i:=0; - 初始化循环计数器 (i),并将起始值设置为 0
- i < 5; - 只要 i 小于 5,循环就继续
- i++ - 每次迭代将循环计数器值增加 1
示例 2
此示例以 10 为步长计数到 100:
package main
import ("fmt")
func main() {
for i:=0; i <= 100; i+=10 {
fmt.Println(i)
}
}
结果
0
10
20
30
40
50
60
70
80
90
100
示例 2 解释
- i:=0; - 初始化循环计数器 (i),并将起始值设置为 0
- i <= 100; - 只要 i 小于或等于 100,循环就继续
- i+=10 - 每次迭代将循环计数器值增加 10
continue 语句
continue
语句用于跳过循环中的一个或多个迭代。然后继续进行循环中的下一次迭代。
示例
此示例跳过值 3
package main
import ("fmt")
func main() {
for i:=0; i < 5; i++ {
if i == 3 {
continue
}
fmt.Println(i)
}
}
结果
0
1
2
4
break 语句
break
语句用于中断/终止循环执行。
示例
此示例在 i 等于 3 时中断循环
package main
import ("fmt")
func main() {
for i:=0; i < 5; i++ {
if i == 3 {
break
}
fmt.Println(i)
}
}
结果
0
1
2
注意: continue
和 break
通常与条件一起使用。
嵌套循环
可以在一个循环内放置另一个循环。
在这里,“内循环”将在“外循环”的每次迭代中执行一次
示例
package main
import ("fmt")
func main() {
adj := [2]string{"big", "tasty"}
fruits := [3]string{"apple", "orange", "banana"}
for i:=0; i < len(adj); i++ {
for j:=0; j < len(fruits); j++ {
fmt.Println(adj[i],fruits[j])
}
}
}
结果
big apple
big orange
big banana
tasty apple
tasty orange
tasty banana
Range 关键字
range
关键字用于更方便地遍历数组、切片或映射的元素。它返回索引和值。
range
关键字的使用方式如下
语法
for 索引, 值 := range 数组|切片|映射 {
// 每次迭代要执行的代码
}
示例
此示例使用 range
遍历数组并打印每个元素的索引和值(idx
存储索引,val
存储值)
package main
import ("fmt")
func main() {
fruits := [3]string{"apple", "orange", "banana"}
for idx, val := range fruits {
fmt.Printf("%v\t%v\n", idx, val)
}
}
结果
0 apple
1 orange
2 banana
提示: 要仅显示值或索引,可以使用下划线 (_
) 忽略另一个输出。
示例
在这里,我们想忽略索引(idx
存储索引,val
存储值)
package main
import ("fmt")
func main() {
fruits := [3]string{"apple", "orange", "banana"}
for _, val := range fruits {
fmt.Printf("%v\n", val)
}
}
结果
apple
orange
banana
示例
在这里,我们想忽略值(idx
存储索引,val
存储值)
package main
import ("fmt")
func main() {
fruits := [3]string{"apple", "orange", "banana"}
for idx, _ := range fruits {
fmt.Printf("%v\n", idx)
}
}
结果
0
1
2