reflection - 如何从 refect.Value 获取结构字段

标签 reflection go

给定

type Runnable interface {
     Run()
}

type T struct {
    Z struct {
        A int
    }
}

func (t T) Run() {
    t.Z.A = 1
}

func main() {
    t := reflect.TypeOf( T{} )

    var v reflect.Value
    v = reflect.New(t).Elem()

    runnable := v.Interface().(Runnable)
    runnable.Run()

最后,有没有办法检索 Z 及其由 Run() 方法设置的字段值?

我正在实现一个 API 命令模式,所以 T 可以是 RegisterCommandLoginCommandLogoutCommand 等。 Z 是“输出文档”——API 命令返回的 JSON 文档——我想以声明方式指定,并在命令运行后写入网络。

最佳答案

明白了!感谢 synful 的“指针”:-)

    z := v.Elem().FieldByName("Z").Interface()

关于reflection - 如何从 refect.Value 获取结构字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27362529/

相关文章:

c# - 为什么 PropertyInfo.SetValue 不是通用方法?

java - 我如何使用集成测试运行器在我的 IntelliJ IDEA 项目中运行除以 "IntegrationTest"结尾的那些之外的所有 JUnit 单元测试?

reflection - Go:我怎样才能 "unpack"一个结构?

java - 获取类中的所有变量名

google-app-engine - 无法将 []datastore.PropertyList 传递给 GetMulti 函数(数据存储 : src has invalid type)

Go + Protocol buffers 表现得很奇怪

reflection - 如何检查 Julia 0.6 中给定的 `Method` 对象是否接受给定的 `Tuple` 类型?

javascript - 禁用按钮调用服务器然后重新启用按钮

JSON 解码为 struct 作为 interface{} 产生 map[string]interface{},而不是 struct

xml - 如何解析具有相同名称的嵌套节点的 XML?