我目前有一张 map ,如下
licFeatureMem = make(map[string][]*common.Feature)
我需要制作 map 的副本以传递给某些功能,该功能对其进行了修改,以免丢失原始副本
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
也被修改了。有人可以帮我吗? 最佳答案
复制的 map 具有指向原始 map 的common.Feature
实例的相同指针。对common.Feature
的任何修改将在两张 map 上均可见。要获得真正的深层副本,还必须复制这些对象:
for key, lst := range licFeatureMem {
var newFtLst []*common.Feature
for _, info := range lst {
newInfo:=*info
newFtLst = append(newFtLst, &newInfo)
}
modFeatureMem[key] = &newFtLst
}