需要帮助解决循环依赖问题

我正在我公司的一个项目中工作,我需要添加一个新接口并将其实现到现有代码中。当我这样做时,我遇到了一个具有挑战性的情况,我遇到了循环依赖问题。


以下是更多详细信息:

项目目录:test-cyclic-dependency

现有代码在 File1 中:test-cyclic-dependency/model/state/model.go


package state


import ("test-cyclic-dependency/model")


type CollectionByCollectionName struct {

    CollectionName string

    imOfTypeInModel model.STRING

}

我需要在 File2 中定义一个新的接口 Search:test-cyclic-dependency/model/search.go


package model


import (

    "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

有人可以帮我解决这个问题吗?有没有办法解决它保持代码组织相同?


繁星coding
浏览 106回答 2
2回答

MMTTMM

打破依赖循环type STRING string进入state包(因为那是唯一使用它的地方 - 所以我猜它与它相关)并model从包中删除导入state。或者,如果它不适合那里逻辑上移动type STRING string到它自己的第三个包并且只在state包中导入它。注意:我假设 typeSTRING只是一些更有意义的占位符,以保持您的示例简单。根本没有意义type STRING string。如果您删除它并仅使用string您不再需要model导入state.

跃然一笑

通过将搜索界面移动到新的单独包“搜索”来解决它。谢谢大家在这方面帮助我。谢谢和问候,Prafulla。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go