func(e * errorString)FormatError(p打印机)(下一个错误)

时间:2019-04-28 02:11:41

标签: go

https://github.com/golang/xerrors/blob/master/errors.go#L29:47

func (e *errorString) FormatError(p Printer) (next error) {
    p.Print(e.s)
    e.frame.Format(p)
    return nil
}

如果没有记错,它总是返回nil对吗?如果next总是nil,那么它的目的是什么?

1 个答案:

答案 0 :(得分:2)

  

接下来的目的是什么?


FormatError(p Printer) (next error)方法满足一个接口。

// A Formatter formats error messages.
type Formatter interface {
    error

    // FormatError prints the receiver's first error and returns the next error in
    // the error chain, if any.
    FormatError(p Printer) (next error)
}

有时候我们会返回非零错误。

func (e *noWrapError) FormatError(p Printer) (next error) {
    p.Print(e.msg)
    e.frame.Format(p)
    return e.err
}