Golang 的 range 是用于 for 循环遍历数组、切片、映射、字符串和通道的循环方式。
它的工作方式是:
一、切片
遍历切片时,会得到两个变量:
- 索引(index) – int
- 值(value) – T类型(T是切片的元素类型)
nums := []int{1, 2, 3}
for index, value := range nums {
fmt.Printf("index:%d value:%d\n", index, value)
}
// 输出
// index:0 value:1
// index:1 value:2
// index:2 value:3
二、 映射
遍历映射时,会得到两个变量:
- key – K 类型(K是映射的键类型)
- value – V类型(V是映射的值类型)
ages :=map[string]int{
"a": 1,
"b": 2,
}
for key,value := range ages{
fmt.Println(key,value)
}
三、通道
遍历通道时,会得到一个变量: value – 通道元素类型
c := make(chan int,2)
c <- 1
c <- 2
for value := range c {
fmt.Println(value)
}
这里只有值,没有索引。
总的来说, Golang 的 range 工作原理为:
- 切片: 索引和值
- 映射: key和value
- 通道: 只有值
range 可以替代传统的 for 循环,实现更简洁的代码。
另外,字符串也可以使用 range 循环。