首页 >后端开发 >Golang >为什么我无法分配给 Go Map 中的结构体字段?

为什么我无法分配给 Go Map 中的结构体字段?

Patricia Arquette
Patricia Arquette原创
2024-11-13 17:00:02615浏览

Why Can't I Assign to a Struct Field in a Go Map?

分配给 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn