戻り変数を含む関数の遅延に関する Errcheck 警告
Go で変数を返す関数を遅延すると、gometalinter や errcheck などのリンターが発行されることがあります。警告。これは、遅延関数にはアクセス可能な戻り値がなく、未処理のエラーが発生する可能性があるためです。
この問題に対処するには、エラー変数をキャプチャする別の匿名関数または名前付き関数で遅延関数をラップすることをお勧めします。
匿名関数を使用した例を次に示します。
<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 } } 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 { // Handle the error } } } defer Checks(r.Body.Close, SomeOtherFunc)</code>
これにより、Go の遅延関数の実行順序を模倣して、最後の遅延関数が最初に実行されます。 .
以上がGo で戻り変数を含む関数を遅延するときにエラーチェック警告を処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。