我正在尝试通过方法的名称(使用反射包)调用另一个包中的方法,但我不确定如何做到这一点。
到目前为止,我正在尝试的是,
reflect.ValueOf(controller).MethodByName(action_name).Call()
(其中控制器是另一个包)
有什么想法吗?
答案 0 :(得分:2)
您无法使用pkg/reflect
执行此操作。为了实现这一点,包需要是一等公民,而不是。
您最好的选择是在map[string]interface{}
中存储您要访问的功能并进行查找
地图中的功能:
func Foo() { println("foo?") }
m := map[string]interface{}{
"foo": Foo
}
f := m["foo"].(func())
f()