3 回答

TA貢獻1809條經(jīng)驗 獲得超8個贊
go list -f '{{join .Deps "\n"}}' <import-path>
<import-path>
如果<import-path>
保留為空,將在- 或當(dāng)前目錄中顯示包的導(dǎo)入依賴項?;蛘?/p>
go list -f '{{join .DepsErrors "\n"}}' <import-path>
希望在您的案例中顯示一些有用的信息。另見輸出
go help list
有關(guān) go list 工具的更多信息。

TA貢獻1797條經(jīng)驗 獲得超6個贊
為了補充 jnml 的答案(有助于“調(diào)試”循環(huán)引用問題),您可以使用依賴倒置來打破這些循環(huán),并結(jié)合依賴注入。對于應(yīng)用程序,我總是嘗試遵循Clean Architecture的指導(dǎo)方針——參見這里的 Go 特定示例——我發(fā)現(xiàn) Go 的接口的“非聲明性實現(xiàn)”(也就是說,你不必明確地說type MyStruct struct implements IfceSomething
) 使這變得非常簡單。
所以,如果你有包A -> B -> C -> A
,你InterfaceA
在包 C 中創(chuàng)建(一些相關(guān)的名稱,顯然,比包相關(guān)的行為更相關(guān):) 并使它依賴于這個接口而不是包 A,并且你確保包 A“實現(xiàn)"這個界面。
然后你只需要在某個時候提供 A 到 C 的具體實現(xiàn)(這里有很多可能性,我通常在知道所有依賴關(guān)系的主包中做這個“粘合”代碼)。
- 3 回答
- 0 關(guān)注
- 342 瀏覽
添加回答
舉報