go - 无法通过将一个变量分配给另一个变量来创建另一个变量中的map [int]类型变量的副本

Jag*_*ati 0 go

我有一张地图:

cart := map[10033207:{10033207 3 425 126} 10012761:{10012761 4 40 0}]
Run Code Online (Sandbox Code Playgroud)

我想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}]
Run Code Online (Sandbox Code Playgroud)

问题是,当我修改tempCart,不知何故cart也越来越修改,变得equaltempCart.

后来当我打印出的值得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但我知道如何将一个地图复制到另一个地图,我的主要问题是为什么我不能只将一个地图分配给另一个变量.为什么我必须在循环中复制它.

sad*_*lil 5

复制地图使用

for k,v := range originalMap {
  newMap[k] = v
}
Run Code Online (Sandbox Code Playgroud)