Go 语言范围(Range)学习笔记

什么是 Range

Go 语言中的 range 关键字可以用于迭代数组(array)、切片(slice)、通道(channel) 或集合(map) 中的元素。它提供了一种简洁、高效的遍历方式。

数组和切片的遍历

我们可以使用 range 来遍历数组或切片中的元素,示例代码如下:

goCopy Code
package main import "fmt" func main() { numbers := []int{2, 4, 6, 8, 10} for i, n := range numbers { fmt.Println("index:", i, ", value:", n) } }

输出结果为:

Copy Code
index: 0 , value: 2 index: 1 , value: 4 index: 2 , value: 6 index: 3 , value: 8 index: 4 , value: 10

在上面的代码中,我们通过 range 循环遍历了数组 numbers 中的所有元素,并且在每次循环中打印了元素的下标和对应的值。

需要注意的是,使用 range 遍历数组或切片时,每次循环都会返回两个值:元素的下标和对应的值。如果只需要其中一个值,则可以使用空白标识符 _ 来忽略另一个值,示例代码如下:

goCopy Code
package main import "fmt" func main() { numbers := []int{2, 4, 6, 8, 10} for _, n := range numbers { fmt.Println("value:", n) } }

输出结果为:

Copy Code
value: 2 value: 4 value: 6 value: 8 value: 10

集合的遍历

除了数组和切片,我们也可以使用 range 来遍历集合中的元素,示例代码如下:

goCopy Code
package main import "fmt" func main() { m := map[string]int{ "apple": 100, "banana": 200, "pear": 300, } for k, v := range m { fmt.Println("key:", k, ", value:", v) } }

输出结果为:

Copy Code
key: apple , value: 100 key: banana , value: 200 key: pear , value: 300

在上面的代码中,我们通过 range 循环遍历了集合 m 中的所有键值对,并且在每次循环中打印了键和对应的值。

结论

Go 语言中的 range 关键字提供了一种简洁、高效的遍历方式,它可以用于迭代数组、切片、通道或集合中的元素。使用 range 遍历数组或切片时,每次循环都会返回两个值:元素的下标和对应的值;而使用 range 遍历集合时,则会返回键和对应的值。