err.(*MyErr) 或 switch err.(type),并建议改为使用 errors.As。
从 Go 1.13 开始,可以使用 fmt.Errorf 函数和 %w 动词来包装错误。 因此,错误的类型断言或类型 switch可能会在已包装错误上失败。 从 Go 1.13 开始,检查特定错误的首选方式是使用标准库中的 errors.As 函数。
快速修复会将错误的类型断言和类型 switch 替换为对 errors.As 的调用。
示例
errFoo, ok := err.(*ErrFoo)
switch err.(type) {
case *ErrBar:
}
在应用快速修复后:
var errFoo *ErrFoo
ok := errors.As(err, &errFoo)
var errBar *ErrBar
switch {
case errors.As(err, &errBar):
}