猿问

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

例子


router.Get(path, handler) // works fine


methodStr = "Get"    

router.methodStr(path, handler) // error


funcs := map[string]func(){"methodStr": "Get"}

router.funcs["methodStr"](path, handler) // error


reflect.ValueOf(router).MethodByName("Get").Call([]reflect.Value{}) // error

我将方法名称作为字符串获取。如何使用字符串名称调用路由器对象方法


精慕HU
浏览 184回答 1
1回答

qq_花开花谢_0

您遇到的前两个错误不是有效的 Go,所以我不确定您对它们的期望。最后一个带有reflect的示例没有任何需要2的函数的参数,这会导致恐慌。添加 2 个参数工作正常:http://play.golang.org/p/mSziWdW0hnargs := []reflect.Value{    reflect.ValueOf("path"),    reflect.ValueOf("handler"),}reflect.ValueOf(router).MethodByName("Get").Call(args)
随时随地看视频慕课网APP

相关分类

Go
我要回答