err.(*MyErr) or switch err.(type),
and suggests using errors.As instead.
Since Go 1.13, errors can be wrapped using the fmt.Errorf function with the %w verb. Therefore, type assertion
or type switch on errors fails on wrapped errors. The preferred way for checking for a specific error type
is to use the errors.As function from the standard library as this function traverses the chain of the wrapped errors while
checking for a specific error type.
For more information about errors.As, refer to working with Errors in Go 1.13.
The quick-fix replaces type assertion and type switch on errors with a call to errors.As.
Example
errFoo, ok := err.(*ErrFoo)
switch err.(type) {
case *ErrBar:
}
After the quick fix is applied:
var errFoo *ErrFoo
ok := errors.As(err, &errFoo)
var errBar *ErrBar
switch {
case errors.As(err, &errBar):
}