Golang の具象型エラー スニペット

PHPz
リリース: 2024-02-05 22:12:12
転載
965 人が閲覧しました

Golang 中具体类型的错误片段

質問内容

Goでエラーラッピングを試しており、ラップされたカスタムエラータイプを返す関数があります。私がやりたいのは、予期されるエラーのリストを反復処理し、関数の出力にこれらの予期されるエラーが含まれるかどうかをテストすることです。

カスタム エラーを []error に入れると、カスタム エラーのタイプが *fmt.wraperror、つまり errors.as( ) は、ほとんどの場合 true を返します。

例として、次のコードを考えてみましょう:

リーリー

出力は

です リーリー

理想的には、出力は

であることが望ましいです。 リーリー

エラーの理由は、テスト ケース エントリごとに予期されるエラーのリストを定義できるようにしたいためです。関数に特定の入力を提供すると、関数がパスに従い、特定のエラーを含むエラーが返されることがわかっているとします。

error.as# で使用できるように、[]error スライスから *fmt.wraperror 型を元の型に変換するにはどうすればよいですか? ##?

を使用して特定の型にキャストできることはわかっています。 (別のエラー) しかし、スライスを反復処理するときに機能させるには、関数が返す可能性のあるすべてのエラーに対してこれを行う必要があります。 )


正解


次の方法を使用してチートできます

errors.as: リーリー

出力された型は期待したものではありませんが、

errors.as は正常に動作します。

あなたの例が機能しない理由は、

errors.as に渡しているものが *error であるためです。したがって、ラップされたエラー値 (つまり err) はターゲット値に直接割り当てられます。この例では、errors.as に渡される値は **anothererror であり、err*anothererror に割り当てることができません。

以上がGolang の具象型エラー スニペットの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート