首頁 > 後端開發 > Golang > 如何在不影響原圖的情況下深度複製Go Map?

如何在不影響原圖的情況下深度複製Go Map?

Mary-Kate Olsen
發布: 2024-12-25 16:18:11
原創
222 人瀏覽過

How to Deep Copy a Go Map Without Affecting the Original?

在不破壞原始地圖的情況下深度複製地圖

在Go 中,嘗試透過分配像aSuperMap[y] = 這樣的引用來複製地圖aMap 可能會導致意想不到的後果。要建立關聯映射而不影響原始映射,需要進行深度複製。

問題

提供的範例嘗試將 aMap 的內容複製到 aSuperMap 中,然後清除一個地圖。但是,從 aMap 中刪除條目 (delete(aMap, x)) 也會從 aSuperMap 中刪除其參考。這會導致超級圖包含重複資料或變得不一致。

解決方案:深度複製

為了避免在更改副本時修改原始地圖,深度複製是用過的。在 for 迴圈中:

for k, v := range originalMap {
  newMap[k] = v
}
登入後複製

originalMap 中的每個鍵值對都被單獨複製到 newMap 中。此過程會建立一個新的獨立地圖,不連結到原始地圖。然後可以清除原始地圖而不影響副本。

範例

以下範例示範深度複製地圖:

originalMap := map[string]int{"one": 1, "two": 2}

// Deep copy originalMap into newMap
newMap := make(map[string]int)
for k, v := range originalMap {
  newMap[k] = v
}

// Clear the original map
originalMap = make(map[string]int)

// Verify that newMap is independent of originalMap
newMap["three"] = 3
fmt.Println(newMap) // {one: 1, two: 2, three: 3}
fmt.Println(originalMap) // {}
登入後複製

中在這個範例中,深度複製允許newMap 獨立於originMap 進行修改和擴展,確保保持兩個映射的完整性。

以上是如何在不影響原圖的情況下深度複製Go Map?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板