mirror of
https://github.com/golang/go
synced 2024-09-29 22:14:29 -06:00
errors: mention Is methods should not call Unwrap
errors.Is internally unwraps the error until the error matches the target. Because of this, a user-authored Is method on an error type need not call errors.Unwrap on itself or the target, because that would make the unwrapping operation O(N^2). It is a subtle detail to remind authors for resource efficiency reasons. Change-Id: Ic1ba59a5bdbfe2c7cb51a2cba2537ab6de4a13ff Reviewed-on: https://go-review.googlesource.com/c/go/+/356789 Reviewed-by: Jean de Klerk <deklerk@google.com> Reviewed-by: Damien Neil <dneil@google.com> Trust: Jean de Klerk <deklerk@google.com> Trust: Damien Neil <dneil@google.com> Run-TryBot: Jean de Klerk <deklerk@google.com> TryBot-Result: Go Bot <gobot@golang.org>
This commit is contained in:
parent
6c3cd5d2eb
commit
7999fd4710
@ -35,7 +35,8 @@ func Unwrap(err error) error {
|
||||
// func (m MyError) Is(target error) bool { return target == fs.ErrExist }
|
||||
//
|
||||
// then Is(MyError{}, fs.ErrExist) returns true. See syscall.Errno.Is for
|
||||
// an example in the standard library.
|
||||
// an example in the standard library. An Is method should only shallowly
|
||||
// compare err and the target and not call Unwrap on either.
|
||||
func Is(err, target error) bool {
|
||||
if target == nil {
|
||||
return err == target
|
||||
|
Loading…
Reference in New Issue
Block a user