gpt4 book ai didi

model - 在 Go 中构建模型

转载 作者:IT王子 更新时间:2023-10-29 02:24:38 25 4
gpt4 key购买 nike

我正在尝试找出在 Go 中构建模型的惯用方法,但我无法找到大型企业类型应用程序的任何示例(只有很多会说话的猫和狗......)。

我首先将我的每个模型放入一个单独的包中,因为这似乎产生了最干净的 API 来使用这些模型:

import "models/person"

person.New(...) // returns the newly created person
person.GetById(123) // returns a single person
person.GetAll() // returns a list of people

但是,我遇到了一个问题,我的模型需要大量相互引用。我最终得到如下所示的包:

-- File person.go
package Person
import "models/team"

type Person struct {
Name string
Team Team
}

func (p *Person) New(...) *Person {
...
}

-- File team.go
package Team
import "models/person"

type Team struct {
Name string
People []*Person
}

func (t *Team) New(...) *Team {
...
}

这不起作用,因为现在我有一个循环引用。我是否应该将所有这些模型添加到同一个包中,以便 API 看起来像这样?

import "model"

model.NewPerson(...) // returns the newly created person
model.GetPersonById(123) // returns a single person
model.GetAllPeople() // returns a list of people

或者我应该使用接口(interface)来解决这个问题(如果是这样,它们会是什么样子)?

我也有关于如何处理数据库连接之类的问题。人们通常如何为他们的模型提供数据库连接(直接或通过一些中间对象)?是否每个调用都需要将某个数据库的接口(interface)作为参数,或者有更好的方法吗?

有没有在某处用 Go 构建完整 Rest API 的更大示例?我找到了一个例子 here但它仍然很小,作者指出他是 Go 的初学者,所以我不确定有多少值得信任。

谢谢!

最佳答案

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

关于model - 在 Go 中构建模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18645488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com