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

Reflection 如何在Golang中反映对象的动态方法名称,reflection,go,Reflection,Go,范例 我得到的方法名是字符串。如何使用字符串名调用路由器对象方法前两个错误无效,因此我不确定您希望从中得到什么。最后一个带有reflect的示例没有任何需要2的函数参数,这将导致死机。添加两个参数可以很好地工作: 大多数情况下,Go无效,并且您没有向reflect示例提供任何参数。@JimB我有两个参数1.string值2。处理函数。我在Call method中传递了两个不同的参数,你应该先问问自己为什么要这样做,因为自从我开始使用Go以来,我从来没有这样使用过反射。在大多数情况下,您甚至不需

范例


我得到的方法名是字符串。如何使用字符串名调用路由器对象方法前两个错误无效,因此我不确定您希望从中得到什么。最后一个带有reflect的示例没有任何需要2的函数参数,这将导致死机。添加两个参数可以很好地工作:


大多数情况下,Go无效,并且您没有向reflect示例提供任何参数。@JimB我有两个参数1.string值2。处理函数。我在Call method中传递了两个不同的参数,你应该先问问自己为什么要这样做,因为自从我开始使用Go以来,我从来没有这样使用过反射。在大多数情况下,您甚至不需要反射…@Elwinar hey通知golang开发者我没有使用refelect,所以不推荐该功能。祈祷
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
args := []reflect.Value{
    reflect.ValueOf("path"),
    reflect.ValueOf("handler"),
}
reflect.ValueOf(router).MethodByName("Get").Call(args)