言葉で説明するのだるいので次のコードを見てください。 package main import ( "fmt" ) func main() { array := []int{1, 2, 3} // これだと &a が同じアドレスになってしまうことがある // (range は array[i] のコピーを返す) for i, a := range array { fmt.Printf("%d: %p\n", i, &a) } // こうするか fmt.Println("----------------------------") for i := range array { a := array[i] fmt.Printf("%d: %p\n", i, &a) } // こうしないといけない fmt.Println("----------------------------") for i