【问题标题】:go - Can't create copy of variable of type map[int]Struct in another variable by just assigning one variable to anothergo - 无法通过仅将一个变量分配给另一个变量来在另一个变量中创建 map[int]Struct 类型变量的副本
【发布时间】: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 也被修改并变成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 重复但我知道如何将一张地图复制到另一张地图,我的主要问题是为什么我不能将一张地图分配给另一个变量。为什么一定要循环复制。

【问题讨论】:

标签: go


【解决方案1】:

复制地图使用

for k,v := range originalMap {
  newMap[k] = v
}

【讨论】:

  • 这不会对地图中的结构进行深度复制。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-17
  • 1970-01-01
  • 2015-09-12
  • 1970-01-01
相关资源
最近更新 更多