err.(*MyErr) 或 switch err.(type),并建议改用 errors.As。
从 Go 1.13 开始,可以使用 fmt.Errorf 函数和 %w 动词来包装错误。 因此,错误的类型断言或类型 switch 会在包装的错误上失败。 检查特定错误类型的首选方式是使用标准库中的 errors.As 函数,因为此函数会在检查特定错误类型时遍历包装错误链。
有关 errors.As 的详细信息,请参阅 working with Errors in Go 1.13。
该快速修复会将错误的类型断言和类型 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):
}