老师你好,反射中reflect.ValueOf()方法的参数,在什么情况下需要传入指针类型变量?
例如下面一段程序:
e := &Employee{"1", "Mike", 10}
// 按名字获取成员
t.Logf("Name value(%[1]v), Type(%[1]T)", reflect.ValueOf(*e).FieldByName("Name")) // 值类型
reflect.ValueOf(e).MethodByName("UpdateAge").Call([]reflect.Value{reflect.ValueOf(20)}) // 指针类型
展开
作者回复: 首先,你是你们在指针值上调用fieldByName的你可以尝试一下,会产生一个Panic。另外,由于我们的方法是定义在结构指针上的,所以要在指针对象上调用MethodByName。
这些你都可以通过修改代码来尝试。