在Go语言中,for range
循环用于遍历数组、切片、字符串、映射(map)和通道(channel)。在遍历时,for range
循环会返回两个值:索引(或键)和对应的值。具体返回哪个值取决于你如何声明循环变量。
当你遍历数组、切片或字符串时,for range
循环会返回两个值:索引和对应的元素值。
package main
import "fmt"
func main() {
arr := []int{10, 20, 30, 40}
for index, value := range arr {
fmt.Printf("Index: %d, Value: %d\n", index, value)
}
}
输出:
Index: 0, Value: 10
Index: 1, Value: 20
Index: 2, Value: 30
Index: 3, Value: 40
在这个例子中,index
是数组的索引,value
是对应的元素值。
如果你只关心索引,可以忽略值:
for index := range arr {
fmt.Printf("Index: %d\n", index)
}
输出:
Index: 0
Index: 1
Index: 2
Index: 3
如果你只关心值,可以使用下划线 _
来忽略索引:
for _, value := range arr {
fmt.Printf("Value: %d\n", value)
}
输出:
Value: 10
Value: 20
Value: 30
Value: 40
对于映射(map),for range
循环会返回键和值:
m := map[string]int{
"apple": 5,
"banana": 3,
"cherry": 7,
}
for key, value := range m {
fmt.Printf("Key: %s, Value: %d\n", key, value)
}
输出(顺序可能不同,因为map是无序的):
Key: apple, Value: 5
Key: banana, Value: 3
Key: cherry, Value: 7
同样地,你可以选择只输出键或值:
// 只输出键
for key := range m {
fmt.Printf("Key: %s\n", key)
}
// 只输出值
for _, value := range m {
fmt.Printf("Value: %d\n", value)
}
for range
循环中,索引和值都会被返回,但你可以选择只使用其中一个。_
来忽略它。希望这个解释能帮助你理解Go语言中for range
循环的行为!