创建类型映射[INT]的变量的副本结构的另一个变量我有一个地图:去 - 不能向它分配一个变量到另一个
cart := map[10033207:{10033207 3 425 126} 10012761:{10012761 4 40 0}]
我想在另一个创建的副本cart
变量tempCart
,以便我可以修改临时使用的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
但我知道如何复制一张地图到anothor,我的主要问题是为什么我不能只分配一个地图到另一个变量。为什么我必须在循环中复制它。
'tempCart:= cart'只是分配一个结构的另一个参考。它不是“复制”。在Go中没有内置的方法来复制结构。你必须用另一个手动值来初始化新的结构,或者使用像https://github.com/jinzhu/copier – Nadh
这样的库不能用指针做点什么吗? – Jagrati
[为什么一个函数中的映射值受到另一个函数中映射项的影响?](http://stackoverflow.com/questions/39605295/why-is-a-map-value-in- one-function-affected-by-an-entry-to-the-map-in-another-fu)相关内容:[将地图的所有元素复制到另一个](http://stackoverflow.com/questions/7436864/复制的所有元素对的一地图 - 进入 - 另一个)。 – icza