// Copyright 2022 The Go Authors. All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE file.package errorsimport ()// Join returns an error that wraps the given errors.// Any nil error values are discarded.// Join returns nil if every value in errs is nil.// The error formats as the concatenation of the strings obtained// by calling the Error method of each element of errs, with a newline// between each string.//// A non-nil error returned by Join implements the Unwrap() []error method.func ( ...error) error { := 0for , := range {if != nil { ++ } }if == 0 {returnnil } := &joinError{errs: make([]error, 0, ), }for , := range {if != nil { .errs = append(.errs, ) } }return}type joinError struct { errs []error}func ( *joinError) () string {// Since Join returns nil if every value in errs is nil, // e.errs cannot be empty.iflen(.errs) == 1 {return .errs[0].Error() } := []byte(.errs[0].Error())for , := range .errs[1:] { = append(, '\n') = append(, .Error()...) }// At this point, b has at least one byte '\n'.returnunsafe.String(&[0], len())}func ( *joinError) () []error {return .errs}
The pages are generated with Goldsv0.6.9-preview. (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu.
PR and bug reports are welcome and can be submitted to the issue list.
Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds.