Reflection 如何从refect.Value获取结构字段
给定 最后,有没有办法按照Reflection 如何从refect.Value获取结构字段,reflection,go,Reflection,Go,给定 最后,有没有办法按照Run()方法的设置来检索Z及其字段值 我正在实现一个API命令模式,因此T可以是RegisterCommand,LoginCommand,LogoutCommand等等。Z是“输出文档”-API命令返回的JSON文档-我希望以声明方式指定它,并在命令运行后写入网络。明白了!感谢synful提供的“指针”:) 您的问题是Run()接受一个值接收器。这意味着复制t的值,修改t.Z.A=1仅适用于该副本。因此,您调用它的对象不会被修改。 type Runnable inte
Run()
方法的设置来检索Z及其字段值
我正在实现一个API命令模式,因此
T
可以是RegisterCommand
,LoginCommand
,LogoutCommand
等等。Z是“输出文档”-API命令返回的JSON文档-我希望以声明方式指定它,并在命令运行后写入网络。明白了!感谢synful提供的“指针”:)
您的问题是
Run()
接受一个值接收器。这意味着复制t
的值,修改t.Z.A=1
仅适用于该副本。因此,您调用它的对象不会被修改。
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 := v.Elem().FieldByName("Z").Interface()