【发布时间】:2022-03-17 01:36:13
【问题描述】:
我有这样的数据结构:
type Snapshot struct {
Key string
Users []Users
}
snapshots := make(map[string] Snapshot, 1)
// then did the initialization
snapshots["test"] = Snapshot {
Key: "testVal",
Users: make([]Users, 0),
}
Users
是另一个结构体。
然后,当我尝试在 Users 切片中添加一些新的
Users
值时,如下所示:
snapshots["test"].Users = append(snapshots["test"].Users, user)
我一直收到这个错误:
cannot assign to struct field snapshots["test"].Users in map
还在这里 https://github.com/golang/go/issues/3117 尝试了解决方法,就像这样:
tmp := snapshots["test"].Users
tmp = append(tmp, user)
snapshots["test"].Users = tmp
但没有运气,仍然是完全相同的错误。
并且还尝试用指针声明地图,所以:
snapshots := make(map[string] *Snapshot, 1)
,仍然没有运气。
-
@keno,感谢您的回复,终于找到了为什么我已经使用指针后仍然无法工作的原因,那是因为我做了
snapshots := make(map[string] Snapshot, 1)
,然后我认为len(snapshots)
会是1,后来我用一个for循环初始化了地图,它使用了len(snapshots)
的值,....所以这意味着初始化过程永远不会运行....然后在我使用指针之后,我得到了这个错误:@ 987654333@