登录
首页 >  Golang >  Go问答

深度复制映射,其中包含指向结构的指针

来源:stackoverflow

时间:2024-03-12 13:06:22 188浏览 收藏

珍惜时间,勤奋学习!今天给大家带来《深度复制映射,其中包含指向结构的指针》,正文内容主要涉及到等等,如果你正在学习Golang,或者是对Golang有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正在学习的大家!

问题内容

我目前有一张地图,如下

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
        }

今天关于《深度复制映射,其中包含指向结构的指针》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>