在Go语言中,range 关键字用于迭代数组、切片、字符串、映射(map)或通道(channel)。以下是一些关键参考资料和示例代码,帮助您更好地理解其用法。
1. Go语言规范(The Go Programming Language Specification)
2. Go官方文档(Go Documentation)
示例代码:
以下是一些常见数据类型的 range 使用示例:
迭代数组或切片:
package main
import "fmt"
func main() {
nums := []int{10, 20, 30}
for index, value := range nums {
fmt.Printf("Index: %d, Value: %d\n", index, value)
}
}
输出:
Index: 0, Value: 10
Index: 1, Value: 20
Index: 2, Value: 30
迭代映射(map):
package main
import "fmt"
func main() {
m := map[string]int{"a": 1, "b": 2}
for key, value := range m {
fmt.Printf("Key: %s, Value: %d\n", key, value)
}
}
输出(顺序可能随机):
Key: a, Value: 1
Key: b, Value: 2
迭代字符串:
package main
import "fmt"
func main() {
s := "Go"
for index, runeValue := range s {
fmt.Printf("Index: %d, Rune: %c\n", index, runeValue)
}
}
输出:
Index: 0, Rune: G
Index: 1, Rune: o
迭代通道(channel):
package main
import "fmt"
func main() {
ch := make(chan int, 2)
ch <- 1
ch <- 2
close(ch) // 必须关闭通道,否则 range 会阻塞
for value := range ch {
fmt.Printf("Value: %d\n", value)
}
}
输出:
Value: 1
Value: 2
这些示例覆盖了 range 的主要用法。如果您有特定场景的问题,可以进一步参考官方资源或社区论坛。