我正在尝试使用基于名称的反射来调用函数。
我首先使用
恢复功能f := reflect.ValueOf(s).MethodByName(name)
我通过检查“ f”是否对
有效,对函数名称进行错误控制if !f.IsValid() {
return errors.New("There is no function with that name")
}
最后我用
进行通话f.Call(inputs)
我的挑战是输入取决于用户,有时它们可以放置太多参数,太少或无效的类型。
IE:
2019/01/04 16:47:54 http: panic serving [::1]:53662: reflect: Call using string as type int
在执行呼叫之前,如何控制输入有效? 也许有一种方法可以恢复我的方法中的预期输入,并对照提供的输入进行检查?