Go 语言中 range 关键字用于 for 循环中迭代数组(array)、切片(slice)、通道(channel)或集合(map)的元素。在数组和切片中它返回元素的索引和索引对应的值,在集合中返回 key-value 对。
遍历对于很多 Golang 的内置容器来说,形式都是基本一致的,主要通过 for-range 语法,我们将通过以下的例子分别展示数组、切片和字典的遍历过程,代码如下所示:
package main import "fmt" func main() { // 数组的遍历 nums := [...]int{1,2,3,4,5,6,7,8} for k, v:= range nums{ // k 为下标,v 为对应的值 fmt.Println(k, v, " ") } fmt.Println() // 切片的遍历 slis := []int{1,2,3,4,5,6,7,8} for k, v:= range slis{ // k 为下标,v 为对应的值 fmt.Println(k, v, " ") } fmt.Println() // 字典的遍历 tmpMap := map[int]string{ 0 : "小明", 1 : "小红", 2 : "小张", } for k, v:= range tmpMap{ // k 为键值,v 为对应值 fmt.Println(k, v, " ") } } |
通过 for-range 可以对数组、切片和字典以同样的方式进行遍历。如果仅需要遍历值,可以将不需要的键改为匿名变量形式,如下所示:
for _, v := range nums { |
仅遍历键时,可以直接省略掉无用值的赋值。在 for-range 遍历的过程中,因为键和值都是通过拷贝的方式进行赋值,对它们进行修改并不会影响到容器内成员的变化,这点需要我们在实际开发中多加注意。
小结
本文主要介绍了容器的遍历。go 语言中主要通过 for-range 语法,文中实际的案例分别展示了数组、切片和字典的遍历过程。
在数组上使用 range 将传入 index 和值两个变量。当我们不需要使用该元素的序号,可以使用空白符"_"省略了。不过有些场景可能确实需要知道它的索引。