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