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
中的map
的value
本身是不可寻址的,因为map
的扩容的时候,可能要做key/val pair
迁移,value
本身地址是会改变的
value
不支持寻址,因而无法赋值
解决方法
在需要对map中结构体进行赋值修改的操作时,需要在map中保存结构体的地址,这时便可以赋值了。