我正在我公司的一個項目中工作,我需要添加一個新接口并將其實現到現有代碼中。當我這樣做時,我遇到了一個具有挑戰性的情況,我遇到了循環依賴問題。以下是更多詳細信息:項目目錄:test-cyclic-dependency現有代碼在 File1 中:test-cyclic-dependency/model/state/model.gopackage stateimport ("test-cyclic-dependency/model")type CollectionByCollectionName struct { CollectionName string imOfTypeInModel model.STRING}我需要在 File2 中定義一個新的接口 Search:test-cyclic-dependency/model/search.gopackage modelimport ( "test-cyclic-dependency/model/state")type Search interface { Search(keyword string) state.CollectionByCollectionName}type STRING string此代碼導致循環依賴錯誤,如下所示:# go build model/state/model.go package command-line-arguments imports test-cyclic-dependency/model imports test-cyclic-dependency/model/state imports test-cyclic-dependency/model: import cycle not allowed有人可以幫我解決這個問題嗎?有沒有辦法解決它保持代碼組織相同?
2 回答

MMTTMM
TA貢獻1869條經驗 獲得超4個贊
打破依賴循環type STRING string
進入state
包(因為那是唯一使用它的地方 - 所以我猜它與它相關)并model
從包中刪除導入state
。或者,如果它不適合那里邏輯上移動type STRING string
到它自己的第三個包并且只在state
包中導入它。
注意:我假設 typeSTRING
只是一些更有意義的占位符,以保持您的示例簡單。根本沒有意義type STRING string
。如果您刪除它并僅使用string
您不再需要model
導入state
.
- 2 回答
- 0 關注
- 141 瀏覽
添加回答
舉報
0/150
提交
取消