map中值类型结构体无法赋值
2020-6-23
| 2023-7-17
0  |  0 分钟
type
status
date
slug
summary
tags
category
icon
password
在Golang中,当一个map的value为一个值类型的结构体时,是不能对其赋值的,修改结构体的数值的。

示例代码

以上代码在对s[1]的结构体执行赋值操作s[1].name = "tom"时,便会产生cannot assign to struct field s[1].name in map的错误。

错误原因

  • x = y 这种赋值的方式,你必须知道 x的地址,然后才能把值 y 赋给 x
  • go 中的 mapvalue 本身是不可寻址的,因为 map 的扩容的时候,可能要做 key/val pair迁移,value 本身地址是会改变的
  • value不支持寻址,因而无法赋值

解决方法

在需要对map中结构体进行赋值修改的操作时,需要在map中保存结构体的地址,这时便可以赋值了。
Golang
  • Golang 基础
  • 别名和类型再定义国内镜像源
    目录