2013-05-01 2 views
1

나는 구조가있는 경우 : 나는, import api.v1에 그에서 할 수 http.Handler은, 말하자면, 만족 거기에 정의 된 유형 중 하나를 반영하고자Go에서 인터페이스를 구현하는 패키지에 정의 된 모든 유형을 얻으려면 어떻게해야합니까?

api > v1 > *.go 

합니다.

유형 및 메소드가 반영되어 있지만, package v1 선언이있는 항목을 검사하고 거기에 정의 된 모든 유형을 추출하는 방법을 알아낼 수 없습니다. 이 일이 불가능한가요?

감사합니다.

+0

나는 잘못된 방향에서 어떤 문제 에든 접근한다는 강한 느낌을 가지고 있습니다. 패키지 이미지가 취하는 접근 방식을 취하여 초기화하는 동안 각 구현 자체를 등록하도록하십시오. – fuz

+0

@FUZxxl 마침내 거기에 도착했습니다. 내가 그랬을 때, 그것은 훨씬 깨끗 해졌다. 감사! –

답변

2

가져온 코드를 사용하지 않으면 컴파일러에 포함되지 않으므로 불가능하다고 생각합니다.

어떻게 든 어쨌든 (따라서 포함되어 있습니다) 코드를 실행하는 경우 자체 등록을 위해 레지스터 함수를 호출 할 수도 있습니다.

Go에서 프로그래밍하는 것은 일반적으로 사용자가 요구하는 일종의 "마법"을 포함하지 않습니다. 처음에 그것은 나에게 제한을 느꼈다. 그러나 나는 잠시 후에 그것에 익숙해졌고, 이제는 그것이 의미가있다면, 그들이 보이는 것처럼 보이는 것에 감사한다.

+1

init() 및 _ imports를 발견했습니다.이 기능은 훨씬 더 나은 (또는 "Go-ish") 방식으로 문제를 다시 생각하게합니다. 감사! –

+0

우수! 재미있게 놀아 라, 내가 나가서 놀면 나도 알아. :-) –

관련 문제