Go Relflect声明类型结构

时间:2016-05-12 14:21:25

标签: go

我希望我能恢复我的结构类型并声明该类型的变量。

我尝试使用Reflect,但我找不到方法。

  package main

import (
    "fmt"
    "reflect"
)

type M struct {
    Name string
}

func main() {
    type S struct {
        *M
    }

    s := S{}
    st := reflect.TypeOf(s)
    Field, _ := st.FieldByName("M")
    Type := Field.Type
    test := Type.Elem()
    fmt.Print(test)
}

1 个答案:

答案 0 :(得分:2)

在您的类型中使用reflect.New,以下是使用反射在Name struct的新实例上设置M的示例:

package main

import (
    "fmt"
    "reflect"
)

type M struct {
    Name string
}

func main() {
    type S struct {
        *M
    }

    s := S{}
    mStruct, _ := reflect.TypeOf(s).FieldByName("M")
    mInstance := reflect.New(mStruct.Type.Elem())
    nameField := mInstance.Elem().FieldByName("Name")
    nameField.SetString("test")
    fmt.Print(mInstance)
}