我是一個長期的python開發人員。我正在嘗試Go,將現有的python應用程序轉換為Go。它是模塊化的,對我來說真的很好用。在Go中創建相同的結構后,我似乎陷入了周期性的導入錯誤,這比我想要的要多得多。從未在python中出現任何導入問題。我什至不必使用導入別名。所以我可能有一些周期性的進口,這在python中是不明顯的。我實際上發現那個奇怪。無論如何,我迷路了,試圖在Go中修復這些問題。我讀過接口可以用來避免循環依賴。但是我不知道如何。我也沒有找到任何例子。有人可以幫我嗎?當前的python應用程序結構如下:/main.py/settings/routes.py contains main routes depends on app1/routes.py, app2/routes.py etc/settings/database.py function like connect() which opens db session/settings/constants.py general constants/apps/app1/views.py url handler functions/apps/app1/models.py app specific database functions depends on settings/database.py/apps/app1/routes.py app specific routes/apps/app2/views.py url handler functions/apps/app2/models.py app specific database functions depends on settings/database.py/apps/app2/routes.py app specific routessettings/database.py具有諸如connect()打開數據庫會話之類的通用功能。因此,應用程序包中的一個應用程序將調用database.connect()并打開數據庫會話。settings/routes.py它具有允許應用程序將其子路線添加到主路線對象的功能的情況也是如此。設置包更多地是關于功能,而不是數據/常量。它包含應用程序包中的應用程序使用的代碼,否則必須在所有應用程序中重復。因此,例如,如果我需要更改路由器類,則只需更改settings/router.py,應用程序將繼續運行而無需進行任何修改。
3 回答

藍山帝景
TA貢獻1843條經驗 獲得超7個贊
基本上,您的代碼是高度耦合的,Golang強制您使程序包保持低耦合,但是在程序包中,高內聚性很好。
與python相比,Golang在軟件包管理方面要優越得多。在python中,您甚至可以動態導入包。
對于大型項目,golang將確保您的軟件包更易于維護。

胡說叔叔
TA貢獻1804條經驗 獲得超8個贊
再說一下低級部分,我的意思是說,它settings
提供了所有應用程序都將基于的基本實用程序(例如,數據庫訪問)。在這種情況下,settings
應通過進口app1
,app2
等等,但它永遠也不應該將其導入。(您可能還想將其重命名settings
為類似的東西utils
,甚至將其分解成單獨的包,但這些都是單獨的想法。)
- 3 回答
- 0 關注
- 606 瀏覽
添加回答
舉報
0/150
提交
取消