package main
import (
"fmt"
)
func main() {
a := [...]int{0, 0}
for _, i := range a {
fmt.Println(i)
a[1] = 42
}
fmt.Println(a)
}
//Outputs:
//0
//0
//[0 42]
// https://play.golang.org/p/vXoURnJUWk6
数组在range中是拷贝后的副本,即range for
里迭代的对象和a
本身无关
使用slice得到正确的结果,不管是声明时使用[]int{0, 0}
(https://play.golang.org/p/8sqQyatDySv)还是循环时使用range a[:]
(https://play.golang.org/p/_RVhF-0_vTg)
,结果都是
0
42
[0 42]