我想通过反射包使用方法名称调用另一个包中的方法,但我不确定该如何实现。
目前我的尝试是:
reflect.ValueOf(controller).MethodByName(action_name).Call()
(其中控制器是另一个包)
有什么想法吗?
我想通过反射包使用方法名称调用另一个包中的方法,但我不确定该如何实现。
目前我的尝试是:
reflect.ValueOf(controller).MethodByName(action_name).Call()
使用pkg/reflect
无法实现此操作。要使其正常工作,包必须是一等公民,但实际上并非如此。
最好的方法是将要访问的函数存储在map[string]interface{}
中,并在映射中查找函数:
func Foo() { println("foo?") }
m := map[string]interface{}{
"foo": Foo
}
f := m["foo"].(func())
f()