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