Go でのクロージャキャプチャの遅延
Go の defer ステートメントを使用すると、周囲の関数が戻った後に関数を実行できます。ただし、クロージャと併用する場合は、パラメータ キャプチャがどのように機能するかを理解することが重要です。
問題
次のコードを考えてみましょう:
コードの出力は:
分析
主な違い
パート 2 とパート 3 の決定的な違いは、クロージャが外部変数をキャプチャするかどうかにあります。パート 2 では、クロージャは外部変数への参照である i をキャプチャします。パート 3 では、クロージャには外部参照がないため、各呼び出しの n の値は異なります。
追加の考慮事項
以上がGo でクロージャキャプチャを延期すると予期せぬ動作が起こるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。