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

我有以下代码(http://play.golang.org/p/47rvtGqGFn)。它在操场上工作但在我的系统上失败


 package main


import (

   "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 wrong

2009/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,但仍然出现相同的错误。我的系统可能有什么问题?


杨__羊羊
浏览 330回答 2
2回答

慕田峪9158850

看起来您已经定义了一个error在您的包中调用的类型。这会导致与内置error类型的名称冲突(您的包定义类型隐藏了内置类型),因此您会看到令人困惑的错误消息。为您的包类型使用不同的、更具描述性(不太通用)的名称。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go