答案:range是Go语言中用于遍历集合类型的关键特性,支持数组、切片、字符串、map和通道。1. 遍历数组或切片时返回索引和元素值,可忽略索引只取值。2. 遍历字符串时返回字节索引和rune,自动处理UTF-8编码,中文字符索引非连续递增。3. 遍历map时返回键值对,顺序无序。4. 遍历通道时持续接收值直至通道关闭。

在Go语言中,range 是用于遍历集合类型的关键特性,支持数组、切片、字符串、map以及通道。使用 range 可以方便地访问集合中的每个元素,通常配合 for 循环使用。
对数组或切片使用 range 时,会返回两个值:索引和对应元素的副本。
range 返回的第一个值是索引,第二个是元素值。如果不需要索引,可以用下划线 _ 忽略。示例:
nums := []int{10, 20, 30}
for i, v := range nums {
fmt.Printf("索引: %d, 值: %d\n", i, v)
}
如果只关心值:
立即学习“go语言免费学习笔记(深入)”;
for _, v := range nums {
fmt.Println(v)
}
range 遍历字符串时,返回的是字符的起始字节索引和对应的 rune(Unicode码点),自动处理 UTF-8 编码。
示例:
s := "你好 Go"
for i, r := range s {
fmt.Printf("位置: %d, 字符: %c\n", i, r)
}
注意:中文字符占多个字节,所以索引不是连续递增1。
map 的遍历使用 range,返回键和值。由于 map 是无序的,每次遍历顺序可能不同。
示例:
m := map[string]int{"apple": 5, "banana": 3}
for k, v := range m {
fmt.Printf("水果: %s, 数量: %d\n", k, v)
}
如果只需要键:
for k := range m {
fmt.Println(k)
}
range 可用于从通道中持续接收值,直到通道被关闭。
示例:
ch := make(chan int, 3)
ch
ch
ch
close(ch)
for v := range ch {
fmt.Println(v)
}
循环会在通道关闭后自动结束。
基本上就这些。合理使用 range 能让代码更简洁清晰。注意根据集合类型判断返回值含义,避免误用索引或值。特别是遍历 string 和 map 时,行为和其他语言略有不同,需留意。
以上就是Golang如何使用range遍历集合的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号