在 Go 中,如何使用 reflect 包来设置 a 的值map?package mainimport ( "reflect")type Mapped struct { M map[string]string}func main() { m := map[string]string{"A":"VA", "B": "VB"} mv := reflect.ValueOf(m) mapped := Mapped{} rv := reflect.ValueOf(mapped) f := rv.FieldByName("M") // f.Set(mv) doesn't work}Value我看到的与地图有关的唯一方法是MapIndex, MapKeys, MapRangeand (如果为 nilSetMapIndex则会出现恐慌)。map我似乎无法设置地址,因为地图不可寻址。我不确定如何将m上面分配给mapped.M.先感谢您。
1 回答
米脂
TA贡献1836条经验 获得超3个赞
您可以通过替换来获得地图的可寻址值:
rv := reflect.ValueOf(mapped)
和:
rv := reflect.ValueOf(&mapped).Elem()
然后你可以打电话:
f := rv.FieldByName("M") f.Set(mv)
和以前一样。
获取指针的值,然后使用间接获取指向的值是不同之处。否则reflect.ValueOf
,将获得结构的不可寻址副本,就像任何其他函数一样。
- 1 回答
- 0 关注
- 69 浏览
添加回答
举报
0/150
提交
取消