在 Golang 中,range 关键字用于迭代数组、切片、映射、通道等数据结构中的元素。
使用 range 迭代数组和切片时,循环变量第一个值为索引,第二个值为当前元素的副本。
例如:
arr := []int{1, 2, 3, 4, 5}
for i, v := range arr {
fmt.Println(i, v)
}
输出结果:
0 1
1 2
2 3
3 4
4 5
使用 range 迭代映射时,循环变量第一个值为键,第二个值为对应值的副本。
例如:
m := map[string]int{"a": 1, "b": 2, "c": 3}
for k, v := range m {
fmt.Println(k, v)
}
输出结果:
a 1
b 2
c 3
使用 range 迭代通道时,会不断从通道中读取元素,直到通道关闭。循环变量只有一个值,为当前读取的元素。
例如:
ch := make(chan int)
go func() {
ch <- 1
ch <- 2
ch <- 3
close(ch)
}()
for v := range ch {
fmt.Println(v)
}
输出结果:
1
2
3