一个用于将错误列表表示为单个错误的Go(golang)包。
注意:自 Go 1.20 起,标准库提供了
errors.Join,其功能与组合多个错误类似。对于新项目,我们建议使用标准库中的errors.Join。 本包提供了额外功能,如自定义格式化、用于并发错误收集的Group模式,以及实用函数(Append、Flatten、Prefix)。
errors.Join基本错误聚合:
// Before (go-multierror)
var result error
result = multierror.Append(result, err1)
result = multierror.Append(result, err2)
return result
// After (stdlib)
var errs []error
if err1 != nil {
errs = append(errs, err1)
}
if err2 != nil {
errs = append(errs, err2)
}
if len(errs) > 0 {
return errors.Join(errs...)
}
return nil自定义格式化:
// go-multierror allows custom formatting
// With stdlib, wrap the joined error with a custom type if needed
type FormattedError struct {
errs []error
}
func (e *FormattedError) Error() string {
// Your custom format here
return fmt.Sprintf("multiple errors: %v", e.errs)
}
func (e *FormattedError) Unwrap() []error {
return e.errs
}并发错误收集(Group):
…go-multierror 是一个用于 Go 的包,它提供了一种将 error 值列表表示为单个 error 的机制。
这允许 Go 中的函数返回一个实际上可能是错误列表的 error。如果调用者知道这一点,他们可以解包该列表并访问其中的错误。如果调用者不知道,该错误会格式化为美观且易于阅读的格式。
go-multierror 与 Go 标准库 errors 包兼容,支持用于错误内省的 As、Is 和 Unwrap 函数。请注意,Unwrap 通过链式调用一次返回一个错误,这与 errors.Join 不同,后者实现了较新的 Unwrap() []error 签名(Go 1.20+)。
使用 go get git 进行安装
暂无开放 Issues,或尚未同步最近议题。