2013-12-20 3 views
3

(반사 패키지를 사용하여) 메소드의 이름으로 다른 패키지의 메소드를 호출하려고하지만 정확히 수행하는 방법이 확실하지 않습니다.다른 패키지의 이름으로 메소드를 호출합니까?

지금까지 IS 노력하고있어,

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

모든 아이디어 (컨트롤러가 다른 패키지가)?

+0

가 나는 그것이 가능하다고 생각하지 않습니다

가장 좋은 방법은 맵의 기능을 당신이 map[string]interface{}에 액세스 할 기능을 저장하고 를 검색하는 것입니다. https://groups.google.com/forum/#!topic/golang-nuts/56pdjuF0dXo – lukad

답변

2

pkg/reflect을 사용하여이 작업을 수행 할 수 없습니다. 이를 위해 패키지는 일류 시민이어야하며, 그렇지 않은 시민이 필요합니다.

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

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

f := m["foo"].(func()) 
f() 
관련 문제