Как вызвать метод в Golang из другого пакета - PullRequest
0 голосов
/ 28 марта 2020

мои ошибки. go файл

 package errors

import (
    "net/http"
)

type RestError struct {
    Message string `json:"message"`
    Status  int    `json:"status"`
    Error   string `json:"error"`
}

func (err *RestError) NewBadRequestError(message string) {
    err.Message = message
    err.Status = http.StatusBadRequest
    err.Error = "bad_request"
}

мой пользователь. go файл

 package users

import (
    errors "Utils/Errors"
)

type (
    User struct {
        ID       uint   `json:"id"`
        Name     string `json:"name"`
        LastName string `json:"last_name"`
        Email    string `json:"email"`
    }
)

func (u *User) Validate() (err *errors.RestError) {

    if u.Name == "" {
        return &err.NewBadRequestError("The name field can't be empty")
    }

    return nil
}

я всегда получаю следующую ошибку компилятора

err.NewBadRequestError(*message) (no value) used as valuecompiler

Хотел бы узнать, что я делаю не так. Я также попытался return & err.NewBadRequestError (сообщение: «Поле имени не может быть пустым»), но все равно получаю следующую синтаксическую ошибку: отсутствует ',' в аргументе listsyntax

1 Ответ

1 голос
/ 28 марта 2020

Ваша проблема не имеет ничего общего с отдельными пакетами.

Во-первых, err не определено. Я предполагаю, что вы определили это где-то не показано в коде, который вы вставили. Если это точно ...

return &err.NewBadRequestError("The name field can't be empty")

Не имеет никакого смысла.

Во-первых, err.NewBadRequestError() ничего не возвращает, поэтому возвращать нечего.

Во-вторых, у вас есть &, что означает получение адреса значения, но, опять же, значения нет - это то, что говорит вам ошибка.

Это не так Я понимаю, для чего предназначен ваш код, поэтому я не могу точно сказать, как это исправить. Один из вариантов - просто удалить return & из вашего кода:

    if u.Name == "" {
        err.NewBadRequestError("The name field can't be empty")
    }

Другой вариант - изменить NewBadRequestError для возврата некоторого значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...