首页 > 后端开发 > 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 独立于originalMap进行修改和扩展,确保保持两个映射的完整性。

以上是如何在不影响原图的情况下深度复制Go Map?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板