go 反射执行指定方法
2021-03-31 本文已影响0人
五岁小孩
代码
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()
}
}