for range 中會爲 i,v 申請各申請一塊內存地址存儲臨時變量,遍歷的時候後面的值會覆蓋前面的
例子:
package main import ( "fmt" ) func main() { m := make(map[int]int) sliceList := []int{1,2,3,4} // for range 中會爲 i,v 申請各申請一塊內存地址存儲臨時變量,遍歷的時候後面的值會覆蓋前面的 for i,v:= range sliceList{ fmt.Printf("i %p \n",&i) fmt.Printf("k %p \n",&v) m[*(&i)]=*(&v) } for k, v := range m { fmt.Println(k, ":", v) } }
執行結果: