Go:如何解决作为参数在两个包之间传递的结构的依赖关系?

不知道构建这个的最佳实践是什么,所以我没有循环依赖关系,我有一个公开的包,它需要一个存储,因为它需要访问数据库,但它也有一些结构userUserService


package user


type UserParams struct {

    Client             util.HTTPExecutor

    Store              store.Store

    ...

}


func NewUserService(params *UserServiceParams) *UserService {...}



type User struct {

    ID               int32        `db:"id" json:"id"`

    Name             string       `db:"name" json:"name"`

}

同时,我有一个存储包,它有一个接口,可以采取一些用户结构并保存到数据库中。


package store


type Store interface {

  UpdateUser(ctx context.Context, u *user.User) error

}

它是否更有意义

  1. 将结构移动到商店包装中(后者可能最终会为不同的产品组件生成很多这些结构)User

  2. 将结构移动到单独的公共包中,以便两个包都可以访问它User

  3. 将结构移动到包下的包中Useruserstructuser

谢谢!


慕桂英3389331
浏览 118回答 1
1回答

白衣非少年

首先,这个问题有点主观,因为它在很大程度上取决于你的项目和你的项目的布局。话虽如此,如果我是你,我会这样做。考虑添加一个包。包很少依赖于其他任何内容,但所有内容都将依赖于包。然后,您的 和 包 都可以导入包,而不必担心周期性依赖关系。typestypestypesstoreservicestypes箭头表示依赖关系/导入
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go