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 サイトの他の関連記事を参照してください。