【发布时间】:2016-11-11 13:22:42
【问题描述】:
我有一张地图:
cart := map[10033207:{10033207 3 425 126} 10012761:{10012761 4 40 0}]
我想在另一个变量 tempCart 中创建 cart 的副本,以便我可以修改 tempCart 以便在我的函数中临时使用。我希望购物车价值保持不变。
tempCart := cart
//some operation which modifies temp cart and make it
//map[10033207:{10033207 2 425 126} 10012761:{10012761 1 40 0}]
问题是当我修改tempCart 时,不知何故cart 也被修改并变成equal 到tempCart。
稍后当我打印cart 的值时,我得到:
map[10033207:{10033207 2 425 126} 10012761:{10012761 1 40 0}] 而不是 map[10033207:{10033207 3 425 126} 10012761:{10012761 4 40 0}] 的原始值。
不明白背后的原因,想知道如何创建cart的副本的解决方案。
编辑:这个问题已被标记为与copy one map to another 重复但我知道如何将一张地图复制到另一张地图,我的主要问题是为什么我不能将一张地图分配给另一个变量。为什么一定要循环复制。
【问题讨论】:
-
tempCart := cart只是将一个结构的引用分配给另一个结构。这不是“复制”。 Go 中没有内置的复制结构的方法。您必须手动使用另一个结构的值初始化新结构,或者使用像 github.com/jinzhu/copier 这样的库 -
不能用指针以某种方式完成吗?
-
@Jagrati:您专门使用指针修改原始值
-
@icza 谢谢我回答了这些问题。但是,我问了这个问题,因为我不知道我应该这样搜索我的问题。无论如何,谢谢。
标签: go