err.(*MyErr) または switch err.(type) などのエラーに対する型アサーションまたは型 switch を報告し、errors.As の使用を代わりに提案します。

Go 1.13 以降は %w 動詞を含む fmt.Errorf 関数を使用してエラーをラップできます。 そのため、エラーの型アサーションまたは型 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):
}