如何从不同的包调用Golang中的方法

如何从不同的包调用Golang中的方法,go,Go,我的错误.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) { e

我的错误.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"
}
我的user.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.newAddresserRor(消息:“name字段不能为空”) 但仍然会出现以下语法错误:
参数列表语法中缺少“,”您的问题与单独的包无关

首先,
err
未定义。我假设您在粘贴的代码中没有显示它的某个地方定义了它。如果这是准确的

return &err.NewBadRequestError("The name field can't be empty")
没有任何意义

首先,
err.newaddrequesterror()
不返回任何内容,因此没有要返回的内容

其次,您有一个
&
,这意味着获取值的地址,但同样,没有值——这就是错误告诉您的

现在还不清楚你的代码要做什么,所以我不能确切地告诉你如何修复它。一个选项是从代码中删除
返回&

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

另一种方法是修改
newaddRequestError
以返回一些值。

这不会导致您的直接问题,但是
import(errors“Utils/errors”)
无效。看起来你有打字错误?您打算执行&erros.newAddresserRor(“名称字段不能为空”)?——err=>errors@Gaetan sobzet error.go文件是一个自定义错误处理文件。当我有一个错误的请求时,我返回一个接收RestErr结构的newaddrest func。如果u.Name==“{err.NewBadRequestError(“名称字段不能为空”)}意味着如果我有一个空名称,我将返回一个badrequest-response自定义错误