为了账号安全,请及时绑定邮箱和手机立即绑定

在 Go 中构建模型

在 Go 中构建模型

Go
人到中年有点甜 2021-06-08 13:58:11
我正在尝试找出在 Go 中构建模型的惯用方法,但我无法为大型企业类型的应用程序找到任何示例(只有很多会说话的猫和狗......)。我首先将我的每个模型放入一个单独的包中,因为这似乎产生了最干净的 API 来使用模型:import "models/person"person.New(...)     // returns the newly created personperson.GetById(123) // returns a single personperson.GetAll()     // returns a list of people但是,后来我遇到了我的模型需要相互引用很多的问题。我最终得到了如下所示的包:-- File person.gopackage Personimport "models/team"type Person struct {    Name string    Team Team}func (p *Person) New(...) *Person {    ...}-- File team.gopackage Teamimport "models/person"type Team struct {    Name   string    People []*Person}func (t *Team) New(...) *Team {    ...}这不起作用,因为现在我有一个循环引用。我应该将所有这些模型添加到同一个包中,以便 API 看起来像这样吗?import "model"model.NewPerson(...)     // returns the newly created personmodel.GetPersonById(123) // returns a single personmodel.GetAllPeople()     // returns a list of people或者我应该使用接口来解决这个问题(如果是这样,它们会是什么样子)?我也有关于如何处理数据库连接之类的问题。人们通常如何向他们的模型提供数据库连接(直接或通过某些中间对象)?是否每次调用都需要将某个数据库的接口作为参数,还是有更好的方法来做到这一点?在 Go 的某个地方是否有一个更大的例子来构建完整的 Rest API?我在这里找到了一个例子,但它仍然很小,作者指出他是 Go 的初学者,所以我不确定有多少值得信任。
查看完整描述

2 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

无需将每个模型放在单独的包中。事实上,他们可能只是进入包 main。如果几个包彼此之间存在各种相互依赖关系,那么它们在概念上的分离程度不足以成为单独的包。


查看完整回答
反对 回复 2021-06-28
  • 2 回答
  • 0 关注
  • 185 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信