Go 语言范围(Range)
在 Go 语言中,range
关键字用于遍历各种数据结构,包括数组、切片、字符串、映射和通道。range
提供了一种简洁的方式来迭代这些集合,而不需要手动管理索引或计数器。以下是 range
关键字在不同数据结构中的用法:
数组和切片:
- 当对数组或切片使用
range
时,返回值是索引和元素的值。
nums := []int{1, 2, 3, 4}
for i, num := range nums {
fmt.Printf("Index: %d, Value: %d\n", i, num)
}
- 当对数组或切片使用
字符串:
- 字符串遍历时,
range
返回的是每个字符的索引和 Unicode 码点(rune
)。
str := "hello"
for i, char := range str {
fmt.Printf("Index: %d, Character: %c\n", i, char)
}
- 字符串遍历时,
映射(Map):
- 在遍历映射时,
range
返回键和值。
kv := map[string]string{"a": "apple", "b": "banana"}
for key, value := range kv {
fmt.Printf("%s -> %s\n", key, value)
}
- 在遍历映射时,
通道(Channel):
range
可以用于从通道接收值,直到通道关闭。
ch := make(chan int, 2)
ch <- 1
ch <- 2
close(ch)
for n := range ch {
fmt.Println(n)
}
在使用 range
时,如果只需要值而不需要索引或键,可以使用下划线 _
忽略不需要的部分。例如,如果只需要数组的值,可以写 for _, value := range nums
。这在需要提高代码可读性或处理不需要的变量时非常有用。