1. type (
    2. user struct {
    3. ID uint64
    4. Info userinfo
    5. }
    6. userinfo struct {
    7. Name string
    8. Age int
    9. }
    10. )
    11. func main() {
    12. s := user{}
    13. // 创建新的类型实例
    14. ref := reflect.New(reflect.TypeOf(s))
    15. ref.Elem().FieldByName(`ID`).SetUint(1)
    16. ref.Elem().FieldByName(`Info`).Set(reflect.ValueOf(userinfo{
    17. Name: `kyo`,
    18. Age: 18,
    19. }))
    20. fmt.Printf("%#v, %#v\n", s, ref.Interface())
    21. // 直接操作反射对象
    22. refPointer := reflect.Indirect(reflect.ValueOf(&s))
    23. refPointer.FieldByName(`ID`).SetUint(1)
    24. refPointer.FieldByName(`Info`).Set(reflect.ValueOf(userinfo{
    25. Name: `kyo`,
    26. Age: 18,
    27. }))
    28. fmt.Printf("%#v, %#v\n", s, refPointer.Interface())
    29. }