arrays - 包含指向结构的指针的深度复制映射
问题描述
我目前有一张地图如下
licFeatureMem = make(map[string][]*common.Feature)
我需要制作地图的副本以传递给一些修改相同的函数,这样我就不会丢失原始副本
modFeatureMem := make(map[string][]*common.Feature)
for key, lst := range licFeatureMem {
var newFtLst []*common.Feature
for _, info := range lst {
newFtLst = append(newFtLst, info)
}
modFeatureMem[key] = &newFtLst
}
看到的是什么时候modFeatureMem
被修改了,原来licFeatureMem
的也被修改了。有人可以帮助我如何做到这一点吗?
解决方案
common.Feature
复制的地图具有指向原始地图实例的相同指针。任何修改都common.Feature
将在两个地图上可见。要获得真正的深层副本,您还必须复制这些对象:
for key, lst := range licFeatureMem {
var newFtLst []*common.Feature
for _, info := range lst {
newInfo:=*info
newFtLst = append(newFtLst, &newInfo)
}
modFeatureMem[key] = &newFtLst
}
推荐阅读
- javascript - 用特定字符串替换所有左边的空格
- php - 函数结果周围的 PHP Echo HTML 标记(Wordpress)
- c++ - 平衡括号问题(输出总是好的)
- c - 如何在 C 中实现多管道?
- android - 图像未显示在图像视图中
- vue.js - 从文档示例中在 Vue 中声明反应性属性
- javascript - JS import export SyntaxError: 不能在模块外使用 import 语句
- mysql - 从 LUA 代码中的 MYSQL 查询中删除引号
- c# - 将 CSV 输入(1 个字段)转换为目标类(2 个字段)
- html - 尝试使用 node.js 解密