go 反射执行指定方法
代码
type Student struct {
Name string
Age int
}
func (s *Student) SetName(name string) {
s.Name = name
}
func main() {
var stu = Student{}
v := reflect.ValueOf(stu)
m := v.MethodByName("SetName")
if m.String() == "<invalid Value>" {
return errors.New("该方法不存在")
}
//调用对应的方法执行
rs := m.Call(nil)
if rs != nil && len(rs) > 0 {
if rs[0].String() == "" {
//无返回
return
}
//返回值 rs[0].String()
}
}