如果我有以下結構:如何獲取Go中實現接口的包中定義的所有類型?
api > v1 > *.go
我想能夠import api.v1
並從,反映了任何滿足,比方說,http.Handler
其中定義的類型。
我已經反映了類型和方法,但似乎無法弄清楚如何檢查任何具有package v1
聲明並提取其中定義的所有類型的東西。這是不可能做到的嗎?
謝謝!
如果我有以下結構:如何獲取Go中實現接口的包中定義的所有類型?
api > v1 > *.go
我想能夠import api.v1
並從,反映了任何滿足,比方說,http.Handler
其中定義的類型。
我已經反映了類型和方法,但似乎無法弄清楚如何檢查任何具有package v1
聲明並提取其中定義的所有類型的東西。這是不可能做到的嗎?
謝謝!
如果你不使用導入的代碼,編譯器將不會包含它,所以我認爲這是不可能的。
如果你以某種方式運行代碼(所以它包括在內),你可能只需要調用一個註冊函數來註冊自己。
Go中的編程通常不包括你所要求的那種「魔術」。起初它對我很有限制,但我在一段時間後習慣了它,現在我明白,如果這是有道理的,那麼它們就是它們的樣子。
我發現init()和_ imports,這似乎讓我以更好的方式(或「Go-ish」)重新思考問題。謝謝! – 2013-05-02 14:23:39
非常好!玩得開心,當我和Go一起玩時,我知道我會玩。 :-) – 2013-05-02 18:08:05
我有強烈的感覺,你從錯誤的一面處理任何問題。考慮採用包映像所採用的方法,並讓每個實現在初始化期間註冊自己。 – fuz 2013-05-02 00:41:35
@FUZxxl我終於到了那裏。當我這樣做時,它感覺很乾淨。謝謝! – 2013-05-02 14:24:47