编译器:尽管给出了所有参数,但给出了太多的论据

use*_*268 3 go

我想使用struct DataResponse作为参数JSON()来响应用户.通过初始化DataResponse我得到错误消息的实例,给出了太多的参数,但给出了所有必要的参数.

type DataResponse struct {
    Status int         `json:"status"`
    Data   interface{} `json:"data"`
}

func GetUser(rw http.ResponseWriter, req *http.Request, ps httprouter.Params) {
    user := models.User{}
    // Fetching user from db

    resp := DataResponse(200, user)
    JSON(rw, resp) // rw is the ResponseWriter of net/http
}
Run Code Online (Sandbox Code Playgroud)

编译器抛出以下错误消息:

too many arguments to conversion to DataResponse: DataResponse(200, user)
Run Code Online (Sandbox Code Playgroud)

DataResponse需要两个给定的参数,并且Data是一个接口,因此它应该接受models.User为数据类型.

cni*_*tar 18

resp := DataResponse(200, user)
Run Code Online (Sandbox Code Playgroud)

语法错误.尝试花括号进行结构初始化:

resp := DataResponse{200, user}
                    ^         ^
Run Code Online (Sandbox Code Playgroud)