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
,那么它的目的是什么?
答案 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
}