go 反射执行指定方法

go 反射执行指定方法

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()
	}
}