ホームページ > バックエンド開発 > Golang > Go でエラーを確実に比較するにはどうすればよいですか?

Go でエラーを確実に比較するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-27 13:46:11
オリジナル
610 人が閲覧しました

How Can I Reliably Compare Errors in Go?

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

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