为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Golang中反映对象的动态方法名称

如何在Golang中反映对象的动态方法名称

Go
精慕HU 2021-12-07 16:37:23
例子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)


查看完整回答
反对 回复 2021-12-07
  • 1 回答
  • 0 关注
  • 183 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信