如何从不同的包调用Golang中的方法
我的错误.go文件如何从不同的包调用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
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自定义错误