第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關(guān)于如何避免 Go 中的導(dǎo)入循環(huán)有什么好的建議嗎?

關(guān)于如何避免 Go 中的導(dǎo)入循環(huán)有什么好的建議嗎?

Go
慕無忌1623718 2021-06-04 18:10:29
我在 Go 項目上工作了一個月。好消息是 Go 真的非常高效。但是經(jīng)過一個月的開發(fā),我已經(jīng)有了數(shù)千行代碼和許多packages. 避免導(dǎo)入周期對我來說是一個主要問題,每當(dāng)我遇到導(dǎo)入周期錯誤時,我第一次都不知道問題出在哪里。轉(zhuǎn)到編譯器也只有很簡單的通知,總是不夠好,快速定位問題,如:main.go:7:3: import cycle not allowed。它只會幫助您了解哪個文件可能導(dǎo)致問題,但不會更深入。由于import隨著代碼的增長關(guān)系變得越來越復(fù)雜,我很想知道如何在 Go 中更有效地避免導(dǎo)入循環(huán)。任何幫助深表感謝。
查看完整描述

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 工具的更多信息。


查看完整回答
反對 回復(fù) 2021-06-07
?
FFIVE

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)系的主包中做這個“粘合”代碼)。


查看完整回答
反對 回復(fù) 2021-06-07
  • 3 回答
  • 0 關(guān)注
  • 342 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號