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