在 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 關注
- 85 瀏覽
添加回答
舉報
0/150
提交
取消