当返回类型实际出错时,为什么需要返回指针?

时间:2014-04-12 15:57:32

标签: pointers error-handling go

我正在阅读文章Error handling and Go,并且不太明白为什么在返回类型实际为&errorString{text}时必须返回指针(error)?

我的理解是error是一个接口,errorString实现了接口,因此,返回errorString也没关系(但事实并非如此)。

// New returns an error that formats as the given text.
func New(text string) error {
    return &errorString{text}
}

errorString实现

// errorString is a trivial implementation of error.
type errorString struct {
    s string
}

func (e *errorString) Error() string {
    return e.s
}

1 个答案:

答案 0 :(得分:6)

因为error的{​​{1}}接口是为指针(errorString)实现的,如果它实现如下,则会直接返回值:

func (e *errorString) Error()