Как я могу инициализировать поле карты структуры с помощью отражения?
Пример кода, который паникует, и я хочу, чтобы он работал ( Детская площадка ):
package main
import (
"fmt"
"reflect"
)
type User struct {
Names map[string]string
}
func main() {
var u interface{} = User{}
names := make(map[string]string)
names["test"] = "test"
v := reflect.ValueOf(u)
n := reflect.ValueOf(names)
field := v.FieldByName("Names")
field.Set(n)
fmt.Println(v.Interface())
fmt.Println(u)
}
panic: reflect: reflect.flag.mustBeAssignable using unaddressable value
goroutine 1 [running]:
reflect.flag.mustBeAssignableSlow(0x15, 0x0)
/usr/local/go/src/reflect/value.go:247 +0x180
reflect.flag.mustBeAssignable(...)
/usr/local/go/src/reflect/value.go:234
reflect.Value.Set(0x101ec0, 0x0, 0x15, 0x101ec0, 0x43e280, 0x15)
/usr/local/go/src/reflect/value.go:1531 +0x40
main.main()
/tmp/sandbox776916734/prog.go:21 +0x200