
for range 和 for i 输出结果不同
考虑以下代码:
func examplefunc(arr []int) {
arr[0] = 100
arr[1] = 101
}
func main() {
arr := make([]int, 2, 5)
for i := 0; i < len(arr); i++ {
arr[i] = i
}
examplefunc(arr)
for v := range arr {
fmt.printf("%d\n", v) // 输出 0 1
}
for i := 0; i < len(arr); i++ {
fmt.printf("%d\n", arr[i]) // 输出 100 101
}
}为什么使用 for range 和 for i 输出的结果不同?
这是因为 for range 遍历的是切片的元素值,而 for i 遍历的是切片的索引。
要使用 for range 遍历元素值,可以使用以下方法:
for _, v := range arr {
fmt.printf("%d\n", v)
}这样,就可以得到相同的输出:
0 1 100 101










