在我的代碼中,我創建了一個映射指針,然后我取消引用它來檢索一個項目。a := "...big JSON string..."b := map[string]B{}json.Unmarshal(a, &b)c.my_map = &b...// and my fetch function does:result = (*c.my_map)[id]當取消引用該映射指針時,它是否會在內存中創建映射的臨時副本?即當我這樣做時:d := *c.my_map我知道我得到了地圖的副本d(不是深層副本,但地圖本身是重復的),所以我認為上面的語句最終可能會復制所有內容......為什么是指針?地圖由 go 例程加載,然后我將最終指針保存在我的結構中。該保存發生在鎖上。加載可能很長(數據 Gb),所以這就是為什么......(現在閱讀 Zuko 的答案)它看起來根本不需要它,因為無論如何都會將地圖作為參考傳遞。
在golang中訪問映射指針中的對象,取消引用會導致映射副本嗎
慕蓋茨4494581
2022-07-18 16:13:20