为了账号安全,请及时绑定邮箱和手机立即绑定

不能使用 errors.New(“something wrong”)(类型错误)

不能使用 errors.New(“something wrong”)(类型错误)

Go
杨__羊羊 2021-08-23 17:13:59
我有以下代码(http://play.golang.org/p/47rvtGqGFn)。它在操场上工作但在我的系统上失败 package mainimport (   "log"   "errors" )func main() {    j := &JustForTest{}    a, err := j.Test(3)    if err != nil {        log.Println(err)    }    log.Println(a)}type JustForTest struct {}func (j *JustForTest) Test(i int) (string, error) {    if i < 5 {        return "fail", errors.New("something wrong")    }    return "success", nil}在操场上,它返回了我期望的东西:2009/11/10 23:00:00 something wrong2009/11/10 23:00:00 fail但是当我在系统上运行“go install”时,出现编译器错误:../warehouse/warehouse.go:32: cannot convert nil to type error../warehouse/warehouse.go:83: cannot use errors.New("something wrong") (type error) as type error in return argument../warehouse/warehouse.go:85: cannot use nil as type error in return argument我觉得这真的很奇怪。我已将 Go 安装从 1.3.2 升级到 1.3.3,但仍然出现相同的错误。我的系统可能有什么问题?
查看完整描述

2 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

看起来您已经定义了一个error在您的包中调用的类型。

这会导致与内置error类型的名称冲突(您的包定义类型隐藏了内置类型),因此您会看到令人困惑的错误消息。

为您的包类型使用不同的、更具描述性(不太通用)的名称。


查看完整回答
反对 回复 2021-08-23
  • 2 回答
  • 0 关注
  • 329 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信