按名称在其他包中调用方法?

时间:2013-12-20 19:59:08

标签: reflection methods controller go

我正在尝试通过方法的名称(使用反射包)调用另一个包中的方法,但我不确定如何做到这一点。

到目前为止,我正在尝试的是,

reflect.ValueOf(controller).MethodByName(action_name).Call()

(其中控制器是另一个包)

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您无法使用pkg/reflect执行此操作。为了实现这一点,包需要是一等公民,而不是。

您最好的选择是在map[string]interface{}中存储您要访问的功能并进行查找 地图中的功能:

func Foo() { println("foo?") }

m := map[string]interface{}{
    "foo": Foo
}

f := m["foo"].(func())
f()