登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-03-22 21:51:33 244浏览 收藏

在 Go 中,跨不同包调用方法时,如果出现编译器错误“err.NewBadRequestError(*message) (no value) used as valuecompiler”,可能是由于以下原因: 1. **err 未定义:**确保在调用 err.NewBadRequestError() 之前已正确定义 err 变量。 2. **方法不返回任何内容:**如果 newbadrequesterror() 方法不返回任何内容,则无法将它作为值返回。请修改方法以返回所需的值。

问题内容

我的errors.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.newbadrequesterror(message: "名称字段不能为空") 但仍然出现以下语法错误: 参数列表语法中缺少“,”


解决方案


您的问题与单独的包无关。

首先,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 以返回一些值。

今天关于《在Golang中如何在不同的包中调用方法》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>