在一个list遍历中,将改变的对象存在两个map集合中,发现操作的对象是一个,如何确保map的独立副本对象,简写代码
时间: 2024-03-27 13:38:52 浏览: 51
可以通过使用深拷贝或浅拷贝来创建一个新的对象,然后将其添加到两个map中,这样每个map都有自己独立的对象副本。下面是一个简单的示例代码:
```go
type Object struct {
Name string
// ...
}
// 假设 objects 是要遍历的列表
objects := []Object{
{Name: "obj1"},
{Name: "obj2"},
{Name: "obj3"},
}
// 创建两个空的 map
map1 := make(map[string]*Object)
map2 := make(map[string]*Object)
// 遍历列表
for _, obj := range objects {
// 创建一个浅拷贝对象
objCopy := obj
// 将拷贝的对象添加到两个 map 中
map1[obj.Name] = &objCopy
map2[obj.Name] = &objCopy
}
```
在上面的示例代码中,我们首先定义了一个 Object 结构体,然后创建了一个对象列表 objects。然后我们创建了两个空的 map:map1 和 map2。接着,我们遍历列表 objects,并使用浅拷贝创建一个新的对象 objCopy。最后,我们将 objCopy 添加到两个 map 中,这样就可以确保每个 map 拥有自己的独立副本对象了。
阅读全文