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

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

Patricia Arquette
发布: 2024-11-12 22:36:02
原创
421 人浏览过

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

错误:无法分配给 Map 的结构字段

在使用存储结构的映射时,开发人员经常遇到错误“无法分配给结构”地图上的字段。”当尝试修改存储在映射中的结构内的子字段时,会出现此问题。

提供的示例演示了这种情况。映射快照使用键值对进行初始化,其中值是包含用户结构切片的结构快照。但是,当尝试附加到 Users 切片时,会引发上述错误。

要解决此问题,必须了解存储在映射中的原始结构是不可寻址的。相反,它是一个副本。因此,任何修改都不会反映在映射中的原始结构中。

正确的做法是从映射中检索结构,进行必要的修改,然后将其重新分配给映射。下面是实现此方法的修改后的代码:

func main() {
  snapshots := make(map[string]Snapshot, 1)

  snapshots["test"] = Snapshot{
    Key: "testVal",
    Users: make([]Users, 0),
  }

  user := Users{...} // Initialize a new Users struct

  // Retrieve the Snapshot value from the map
  snapshot := snapshots["test"]

  // Append to the Users slice
  snapshot.Users = append(snapshot.Users, user)

  // Reassign the modified Snapshot value to the map
  snapshots["test"] = snapshot
}
登录后复制

通过遵循此方法,地图中的原始 Snapshot 结构将使用附加的 Users 切片成功更新。

以上是为什么我无法分配给映射中的结构体字段?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板