Source file
src/errors/join.go
1
2
3
4
5 package errors
6
7
8
9
10
11
12
13 func Join(errs ...error) error {
14 n := 0
15 for _, err := range errs {
16 if err != nil {
17 n++
18 }
19 }
20 if n == 0 {
21 return nil
22 }
23 e := &joinError{
24 errs: make([]error, 0, n),
25 }
26 for _, err := range errs {
27 if err != nil {
28 e.errs = append(e.errs, err)
29 }
30 }
31 return e
32 }
33
34 type joinError struct {
35 errs []error
36 }
37
38 func (e *joinError) Error() string {
39 var b []byte
40 for i, err := range e.errs {
41 if i > 0 {
42 b = append(b, '\n')
43 }
44 b = append(b, err.Error()...)
45 }
46 return string(b)
47 }
48
49 func (e *joinError) Unwrap() []error {
50 return e.errs
51 }
52
View as plain text