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

转换为 DataResponse 的参数过多

转换为 DataResponse 的参数过多

Go
宝慕林4294392 2022-07-18 16:20:13
我正在尝试制作像构造函数一样的函数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为什么这么说?
查看完整描述

1 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

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从另一个包进行初始化,那么如果没有构造函数,您将无法做到这一点,因为它的所有字段都是私有的。


查看完整回答
反对 回复 2022-07-18
  • 1 回答
  • 0 关注
  • 195 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号