当map遇上range
生活随笔
收集整理的這篇文章主要介紹了
当map遇上range
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
for key,val := range slicerange出的值是副本,并不是值的引用,for循環(huán)結(jié)束之后m[key]中存儲的指針值都是指向val地址,因此打印出來是:
0 -> 3 1 -> 3 2 -> 3 3 -> 3 package mainimport "fmt"/* 說明:m是一個int *int類型的mapfor range 循環(huán)的時候會創(chuàng)建每個元素的副本,而不是元素的引用,所以 m[key] = &val 取的都是變量 val 的地址,所以最后 map 中的所有元素的值都是變量val 的地址,因為最后 val 被賦值為3,所有輸出都是3. */ /* 0 -> 3 1 -> 3 2 -> 3 3 -> 3 */ func main() {slice := []int{0,1,2,3}m := make(map[int]*int)for key,val := range slice {m[key] = &val}for k,v := range m {fmt.Println(k,"->",*v)} } 與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的当map遇上range的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetCode刷题--两数相加
- 下一篇: 《大数据》第1期“专题”——大数据与高性