2013-05-01 165 views
1

如果我有以下結構:如何獲取Go中實現接口的包中定義的所有類型?

api > v1 > *.go 

我想能夠import api.v1並從,反映了任何滿足,比方說,http.Handler其中定義的類型。

我已經反映了類型和方法,但似乎無法弄清楚如何檢查任何具有package v1聲明並提取其中定義的所有類型的東西。這是不可能做到的嗎?

謝謝!

+0

我有強烈的感覺,你從錯誤的一面處理任何問題。考慮採用包映像所採用的方法,並讓每個實現在初始化期間註冊自己。 – fuz 2013-05-02 00:41:35

+0

@FUZxxl我終於到了那裏。當我這樣做時,它感覺很乾淨。謝謝! – 2013-05-02 14:24:47

回答

2

如果你不使用導入的代碼,編譯器將不會包含它,所以我認爲這是不可能的。

如果你以某種方式運行代碼(所以它包括在內),你可能只需要調用一個註冊函數來註冊自己。

Go中的編程通常不包括你所要求的那種「魔術」。起初它對我很有限制,但我在一段時間後習慣了它,現在我明白,如果這是有道理的,那麼它們就是它們的樣子。

+1

我發現init()和_ imports,這似乎讓我以更好的方式(或「Go-ish」)重新思考問題。謝謝! – 2013-05-02 14:23:39

+0

非常好!玩得開心,當我和Go一起玩時,我知道我會玩。 :-) – 2013-05-02 18:08:05

相關問題