【发布时间】:2014-01-09 18:07:30
【问题描述】:
我正在尝试通过方法的名称(使用反射包)调用另一个包中的方法,但我不确定该怎么做。
到目前为止,我正在尝试的是,
reflect.ValueOf(controller).MethodByName(action_name).Call()
(其中控制器是另一个包)
有什么想法吗?
【问题讨论】:
标签: reflection methods controller go
我正在尝试通过方法的名称(使用反射包)调用另一个包中的方法,但我不确定该怎么做。
到目前为止,我正在尝试的是,
reflect.ValueOf(controller).MethodByName(action_name).Call()
(其中控制器是另一个包)
有什么想法吗?
【问题讨论】:
标签: reflection methods controller go
您无法使用pkg/reflect 执行此操作。为此,包需要是一等公民,而他们不是。
最好的办法是将要访问的功能存储在map[string]interface{} 中并查找
地图中的功能:
func Foo() { println("foo?") }
m := map[string]interface{}{
"foo": Foo
}
f := m["foo"].(func())
f()
【讨论】: