2015-05-20 2 views
2

Я хочу использовать 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 
} 

следующее сообщение об ошибке генерируется компилятором:

too many arguments to conversion to DataResponse: DataResponse(200, user) 

DataResponse требует два параметра, которые даются и Data является интерфейсом поэтому он должен принять models.User как тип данных.

ответ

12
resp := DataResponse(200, user) 

Синтаксис неправильно. Попробуйте фигурные скобки для инициализации структуры:

resp := DataResponse{200, user} 
        ^  ^
+0

Я был слишком сфокусирован на параметрах, которые я не видел отсутствующие фигурные скобки. – user3147268

Смежные вопросы