ホームページ > バックエンド開発 > Golang > Go で戻り値を持つ関数を遅延するときにエラーを処理する方法は?

Go で戻り値を持つ関数を遅延するときにエラーを処理する方法は?

Patricia Arquette
リリース: 2024-11-03 01:18:29
オリジナル
873 人が閲覧しました

How to Handle Errors When Deferring Functions with Return Values in Go?

戻り値のある関数を延期するときのエラーの処理

golang/errcheck リンターは、エラーをチェックせずに値を返す関数を延期するときに警告します。これに対処するには、戻り値を保存する必要があり、元の関数を呼び出す別の関数を延期する必要があります。

1 つのアプローチは、次に示すように、匿名関数を使用することです。

<code class="go">defer func() {
    if err := r.Body.Close(); err != nil {
        fmt.Println("Error when closing:", err)
    }
}()</code>
ログイン後にコピー

あるいは、ヘルパー関数を定義することもできます:

<code class="go">func Check(f func() error) {
    if err := f(); err != nil {
        fmt.Println("Received error:", err)
    }
}</code>
ログイン後にコピー

。これは次のように使用できます:

<code class="go">defer Check(r.Body.Close)</code>
ログイン後にコピー

複数の遅延関数呼び出しの場合、複数の関数を受け入れる変更されたヘルパー関数を作成できます。 :

<code class="go">func Checks(fs ...func() error) {
    for i := len(fs) - 1; i >= 0; i-- {
        if err := fs[i](); err != nil {
            fmt.Println("Received error:", err)
        }
    }
}</code>
ログイン後にコピー

さらに、Checks() 関数は下向きループを利用して、遅延関数の先入れ後出しの実行順序を反映します。

以上がGo で戻り値を持つ関数を遅延するときにエラーを処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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