gpt4 book ai didi

mongodb - 使用结构为 Controller 进行模型子类化

转载 作者:IT王子 更新时间:2023-10-29 02:17:00 26 4
gpt4 key购买 nike

您好,我正在尝试为我正在构建的 REST API 构建一个基础框架。我喜欢有一个带有常规 CRUD 操作的 BaseController。我想为每个 Controller 定义一个模型。我认为我的方法还差得很远,唯一似乎仍然不起作用的是每个组件的初始化。我收到此错误:

too few values in struct initializer

和:

cannot use Model literal (type Model) as type User in array element

我的方法:

type Model struct {
Id *bson.ObjectId
}

type Controller struct {
model *Model
arrayOfModels *[]Model
}

然后例如:

type User struct {
Model
someField string
}

type UserController struct {
Controller
}

func NewUserController() UserController {
return UserController{Controller{
model: &User{Model{Id: nil}},
arrayOfModels: &[]User{Model{Id: nil}},
}}
}

我将此 API 与 Mgo(MongoDB 适配器)一起使用,因此我使用 bson.ObjectId

我想知道我做错了什么,我是否应该使用这种方法,还有什么可以更好。

非常感谢您的帮助。

学业

最佳答案

I'd like to know what I'm doing wrong

User 不是用于嵌入 ModelModel。您不能在需要 Model 的地方使用 User 类型的值。

Go 中的多态性是通过接口(interface)而不是嵌入实现的。

此外,您正在尝试进行继承; Go 不支持继承——忘记继承吧。这也意味着忘掉您所知道的 MVC。

此外,您正在使用指向所有内容的指针。不;一个指针是昂贵的,因为如果它逃脱了一个简单的 block 范围,指向的值将分配在堆上而不是堆栈上。在更复杂的情况下也更难推理指针。

您需要进行范式转换,不要尝试将您的“面向对象”专业知识应用到 Go 中。相反,阅读文档、阅读其他代码并学习如何在 Go 中思考。

关于mongodb - 使用结构为 Controller 进行模型子类化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25348927/

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