我正在嘗試找出在 Go 中構(gòu)建模型的慣用方法,但我無法為大型企業(yè)類型的應(yīng)用程序找到任何示例(只有很多會說話的貓和狗......)。我首先將我的每個模型放入一個單獨的包中,因為這似乎產(chǎn)生了最干凈的 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 { ...}這不起作用,因為現(xiàn)在我有一個循環(huán)引用。我應(yīng)該將所有這些模型添加到同一個包中,以便 API 看起來像這樣嗎?import "model"model.NewPerson(...) // returns the newly created personmodel.GetPersonById(123) // returns a single personmodel.GetAllPeople() // returns a list of people或者我應(yīng)該使用接口來解決這個問題(如果是這樣,它們會是什么樣子)?我也有關(guān)于如何處理數(shù)據(jù)庫連接之類的問題。人們通常如何向他們的模型提供數(shù)據(jù)庫連接(直接或通過某些中間對象)?是否每次調(diào)用都需要將某個數(shù)據(jù)庫的接口作為參數(shù),還是有更好的方法來做到這一點?在 Go 的某個地方是否有一個更大的例子來構(gòu)建完整的 Rest API?我在這里找到了一個例子,但它仍然很小,作者指出他是 Go 的初學(xué)者,所以我不確定有多少值得信任。
2 回答

慕田峪7331174
TA貢獻1828條經(jīng)驗 獲得超13個贊
無需將每個模型放在單獨的包中。事實上,他們可能只是進入包 main。如果幾個包彼此之間存在各種相互依賴關(guān)系,那么它們在概念上的分離程度不足以成為單獨的包。
- 2 回答
- 0 關(guān)注
- 217 瀏覽
添加回答
舉報
0/150
提交
取消