Golang Map 接口中的值如何變化?這是一個(gè)讓很多Golang開(kāi)發(fā)者困惑的問(wèn)題。在Go語(yǔ)言中,map是一種非常重要的數(shù)據(jù)結(jié)構(gòu),它以鍵值對(duì)的形式存儲(chǔ)數(shù)據(jù)。然而,在使用map時(shí),我們需要注意其中的一些細(xì)節(jié),特別是在處理值的變化時(shí)。那么,讓我們來(lái)詳細(xì)了解一下在Golang的Map接口中,值是如何變化的吧。
問(wèn)題內(nèi)容
這是代碼庫(kù) –
https://go.dev/play/p/bedouz9qhag
輸出 –
map[something:map[acm:34.12 age:12 dune:dune]]
登錄后復(fù)制
改變 t 變量的值對(duì) x 有何影響?
package main
import "fmt"
func main() {
x: = make(map[string] interface {}, 10)
x["something"] = map[string] interface {} {
"dune": "dune", "age": 12
}
t: = x["something"].(map[string] interface {})
t["ACM"] = 34.12
fmt.Println(x)
}
登錄后復(fù)制
解決方法
映射類型是引用類型,如指針或切片,
所以這一行
t := x["something"].(map[string]interface{}) t["ACM"] = 34.12 fmt.Println(x) }
登錄后復(fù)制
只是為您在 x 變量中創(chuàng)建的現(xiàn)有地圖創(chuàng)建 alias 的淺表副本,因此它們指向您創(chuàng)建的原始地圖所在的相同內(nèi)存地址。
參見(jiàn)參考 -https://www.php.cn/link/0bf31d0d702fcac8c8e07912f3347c31






