例子router.Get(path, handler) // works finemethodStr = "Get" router.methodStr(path, handler) // errorfuncs := map[string]func(){"methodStr": "Get"}router.funcs["methodStr"](path, handler) // errorreflect.ValueOf(router).MethodByName("Get").Call([]reflect.Value{}) // error我将方法名称作为字符串获取。如何使用字符串名称调用路由器对象方法
1 回答
qq_花开花谢_0
TA贡献1835条经验 获得超7个赞
您遇到的前两个错误不是有效的 Go,所以我不确定您对它们的期望。最后一个带有reflect的示例没有任何需要2的函数的参数,这会导致恐慌。添加 2 个参数工作正常:
http://play.golang.org/p/mSziWdW0hn
args := []reflect.Value{
reflect.ValueOf("path"),
reflect.ValueOf("handler"),
}
reflect.ValueOf(router).MethodByName("Get").Call(args)
- 1 回答
- 0 关注
- 183 浏览
添加回答
举报
0/150
提交
取消