转换为 DataResponse 的参数过多

我正在尝试制作像构造函数一样的函数


type DataResponse struct {

    status  int

    message string

    data    interface{}

}


func (d DataResponse) New(status int, message string, data interface{}) DataResponse {

    return DataResponse{

        status,

        message,

        data,

    }

}

现在我这样称呼它


func ReadUser(db *database.Database) fiber.Handler {

    return func(c *fiber.Ctx) error {

        id := IDFromParams(c)

        var User model.User

        result := db.First(&User, id)

        if result.Error != nil {

            panic(result.Error)

        }

        return SendDataResponse(c, DataResponse(

            200,

            "User read",

            &User,

        ))

    }

}

Vscode 向我显示以下错误


too many arguments in conversion to DataResponse

为什么这么说?


宝慕林4294392
浏览 196回答 1
1回答

精慕HU

Go 中的构造函数不像 C++、Java 等那样工作。如果我想在 Go 中创建一个构造函数,它看起来像这样:type DataResponse struct {    status  int    message string    data    interface{}}func NewDataResponse(status int, message string, data interface{}) DataResponse {    return DataResponse{        status,        message,        data,    }}被调用:resp := NewDataResponse(200, "User read", &User)您不需要构造函数,因为您可以使用以下命令创建结构的实例:resp := DataResponse{    status:  200,    message: "User read",    data:    &User,}如果您想简化使用(例如设置默认值)或初始化内部结构,有时构造函数是有意义的。在您的情况下,如果您需要DataResponse从另一个包进行初始化,那么如果没有构造函数,您将无法做到这一点,因为它的所有字段都是私有的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go