2013-12-20 25 views
3

我想通過方法名稱調用另一個包中的方法(使用反射包),但我不確定如何去做。按名稱在其他包中調用方法?

我試圖到目前爲止,

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

(其中控制器是其它封裝)

任何想法?

+0

我不認爲這是可能的。 https://groups.google.com/forum/#!topic/golang-nuts/56pdjuF0dXo – lukad

回答

2

您不能使用pkg/reflect來做到這一點。爲此,包裹必須是一等公民,而他們不是。

你最好的賭注是存儲要在map[string]interface{}訪問功能,並期待 在地圖的功能:

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

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

f := m["foo"].(func()) 
f() 
相關問題