4 ms·
Your example is half right, I had misread the documentation of errors.As [0]. errors.As does work as you describe, but errors.Is doesn't: that only compares th
by simiones 2y ago
Your example is half right, I had misread the documentation of errors.As [0].
errors.As does work as you describe, but errors.Is doesn't: that only compares the error argument for equality, unless it implements Is() itself to do something different. So `var e error ErrType{Code: 1, Message: "Good"} = errors.Is(e, ErrType{})` will return false. But indeed Errors.As will work for this case and allow you to check if an error is an instance of ErrType.
[0] https://play.golang.com/p/qXj3SMiBE2K https://play.golang.com/p/qXj3SMiBE2K
- kbolino 2y agoAs I said, errors.Is works with ErrValue and errors.As works with ErrType. I guess the word "Is" is doing too much work here, because I wouldn't expect ErrType{Code:1} and ErrType{Code:0} to match under errors.Is, though ErrType{Code:1} and ErrType{Code:1} would, but yes you could implement an Is method to override that default behavior.