ホームページ  >  記事  >  バックエンド開発  >  Go で戻り値がチェックされていない可能性がある関数を安全に延期するにはどうすればよいですか?

Go で戻り値がチェックされていない可能性がある関数を安全に延期するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-02 01:00:30847ブラウズ

How to Safely Defer Functions with Potentially Unchecked Return Values in Go?

戻り値がチェックされていない遅延関数の管理

gometalinter と errcheck を使用すると、開発者はチェックせずに変数を返す遅延関数に関する警告が表示される場合があります。エラー用。これは通常、リクエスト本文を閉じるなどのシナリオで発生し、Close() メソッドがエラー値を返します。

この問題に対処するには、元の関数を呼び出してその戻り値を確認する別の関数を延期することをお勧めします。価値。これは、次のように匿名関数を使用して実現できます。

<code class="go">defer func() {
    if err := r.Body.Close(); err != nil {
        // Handle the error
    }
}()</code>

別の解決策は、エラー チェックを実行するヘルパー関数を作成することです。

<code class="go">func Check(f func() error) {
    if err := f(); err != nil {
        // Handle the error
    }
}</code>

このヘルパー関数は、元の関数を延期するために使用できます:

<code class="go">defer Check(r.Body.Close)</code>

複数の遅延関数の場合、関数の配列を受け入れるように変更されたヘルパーを作成できます:

<code class="go">func Checks(fs ...func() error) {
    // Implement error checking and execution logic
}</code>

このヘルパーの使用:

<code class="go">defer Checks(r.Body.Close, SomeOtherFunc)</code>

Checks() ヘルパーの下向きループにより、最後の遅延関数が最初に実行され、遅延関数の実行順序が維持されます。

以上がGo で戻り値がチェックされていない可能性がある関数を安全に延期するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。