//当更新struct类型的值时无法取值
原因:
struct类型的map数组类型如下
例如如下构造一个新的struct example
type example struct{
structname string
}
如果赋值给它:
m:=map[string]example {"n":{"name"}}
如果我们打印此时的函数会发现
map[n:{structname:name}]
如果我们此时更改他的值
m["n"].name = "name2" //error
这个时候name无法找到structname的地址所以也更改不了值,依据打印结构我们可以从地址来下手
方法一
利用其他对象取出值再来进行更改
r := m["n"]
r.name = "name2"
m["x"] = r
方法二
利用指针找到structname的地址
m := map[string]*data {"x":{"name"}}
m["n"].name = "name2" //ok
fmt.Println(m["n"]) //prints: