分配给 Map 中的结构字段
尝试修改以下结构体字段时出现错误“无法分配给映射中的结构字段”存储在映射中的结构。这个限制源于 Go 中映射键和值的不变性。
在提供的示例中, snapshots := make(map[string] Snapshot, 1) 创建一个键为 string 类型、值为 string 类型的映射快照,其中快照是一个结构体。要修改快照值中的 Users 切片,您必须遵循正确的步骤。
以下方法可确保正确修改 Users 切片:
func main() { snapshots := make(map[string]Snapshot, 1) snapshots["test"] = Snapshot{ Key: "testVal", Users: make([]Users, 0), } // Get a copy of the 'Users' slice users := snapshots["test"].Users // Append user to the copy users = append(users, user) // Reassign the map entry snapshots["test"].Users = users }
通过获取 ' 的副本用户的切片,您可以修改,然后将修改后的副本重新分配给地图条目。这种方法坚持了地图的不变性。
以上是为什么我无法分配给 Go Map 中的结构体字段?的详细内容。更多信息请关注PHP中文网其他相关文章!