亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

循環依賴關系和接口

循環依賴關系和接口

Go
慕村9548890 2019-12-26 09:52:21
我是一個長期的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將確保您的軟件包更易于維護。


查看完整回答
反對 回復 2019-12-26
?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

再說一下低級部分,我的意思是說,它settings提供了所有應用程序都將基于的基本實用程序(例如,數據庫訪問)。在這種情況下,settings應通過進口app1,app2等等,但它永遠也不應該將其導入。(您可能還想將其重命名settings為類似的東西utils,甚至將其分解成單獨的包,但這些都是單獨的想法。)

查看完整回答
反對 回復 2019-12-26
  • 3 回答
  • 0 關注
  • 606 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號