Go でのエラー メッセージの比較
Go では、エラーは単にエラー インターフェイスを実装する値です。これは、標準の等価演算子 (== および !=) を使用してエラーを比較できることを意味します。ただし、通常、Error() メソッドによって返される文字列表現によってエラーを比較することはお勧めできません。これは、文字列表現が時間の経過とともに変化する可能性があり、コードが不安定になる可能性があるためです。
エラーを比較するより信頼性の高い方法は、予想されるエラーを格納するパッケージ レベルの変数を使用することです。この変数は、関数によって返されたエラーと比較するために使用できます。例:
package mypkg import ( "errors" ) // ErrExample is an example error. var ErrExample = errors.New("this is an example") // DoSomething returns an error if something goes wrong. func DoSomething() error { // ... // If something goes wrong, return the error. return ErrExample }
DoSomething() によって返されたエラーと比較するには、次のコードを使用できます。
if err := DoSomething(); err != nil { // Handle the error. }
DoSomething() によって返されたエラーが次と等しい場合ErrExample の場合、if ステートメントが実行されます。
パッケージ外のコードがパッケージ レベルの変数にアクセスする必要がある場合は、パッケージ レベルの変数をエクスポートすることもできます。 エラー。例:
package mypkg import ( "errors" ) // ErrExample is an example error. var ErrExample = errors.New("this is an example") // Export the error. var ErrExample = ErrExample
エクスポートされたエラーを使用するには、次のコードを使用できます:
if err := somepackage.DoSomething(); err != nil { // Handle the error. }
somepackage.DoSomething() によって返されたエラーが mypkg.ErrExample と等しい場合
パッケージ レベルの変数を使用してエラーを比較することで、コードの信頼性を高めることができます。
以上がGo でエラーを確実に比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。