在 Go 语言中,range
是一个用于遍历数组、切片、字符串、映射(map)或通道(channel)的关键词。使用 range
可以简化循环中的迭代操作,使代码更加简洁易读。
遍历数组或切片
当使用 range
遍历数组或切片时,range
会返回每个元素的索引和值。如果你只对值感兴趣,可以使用下划线 _
忽略索引。
package main
import "fmt"
func main() {
numbers := []int{
1, 2, 3, 4, 5}
// 使用索引和值
for index, value := range numbers {
fmt.Printf("Index: %d Value: %d\n", index, value)
}
// 只使用值
for _, value := range numbers {
fmt.Println(value)
}
}
遍历字符串
遍历字符串时,range
返回的是每个字符的字节索引及其对应的 Unicode 码点(rune)。
package main
import "fmt"
func main() {
str := "Hello, 世界"
for index, runeValue := range str {
fmt.Printf("Index: %d Rune: %c\n", index, runeValue)
}
}
遍历映射(map)
遍历映射时,range
返回键值对。你可以选择忽略不需要的部分。
package main
import "fmt"
func main() {
ages := map[string]int{
"Alice": 30, "Bob": 25, "Charlie": 35}
// 使用键和值
for key, value := range ages {
fmt.Printf("Key: %s Value: %d\n", key, value)
}
// 只使用键
for key := range ages {
fmt.Println(key)
}
}
遍历通道(channel)
遍历通道时,range
会持续接收通道中的值,直到通道关闭。
package main
import "fmt"
func main() {
ch := make(chan int)
go func() {
for i := 0; i < 5; i++ {
ch <- i
}
close(ch) // 关闭通道
}()
// 使用值
for value := range ch {
fmt.Println(value)
}
}
以上是 Go 语言中使用 range
进行循环的基本示例。根据不同的数据类型,range
提供了灵活且强大的遍历机制。