使用反射调用函数时对参数进行Golang错误控制

时间:2019-01-04 16:56:16

标签: go reflection

我正在尝试使用基于名称的反射来调用函数。

我首先使用

恢复功能
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

在执行呼叫之前,如何控制输入有效? 也许有一种方法可以恢复我的方法中的预期输入,并对照提供的输入进行检查?

0 个答案:

没有答案