Go では、遅延関数呼び出しを使用すると、周囲の関数が戻った後にコードを実行できます。ただし、引数の処理方法を理解していないと、遅延呼び出しの動作は混乱する可能性があります。
「A Tour of Go」からの引用では、次のように述べられています。遅延呼び出しの引数はすぐに評価されますが、関数呼び出しは周囲の関数が戻るまで実行されません。」これは、次のことを意味します。
提供された例を調べてみましょう:
func def(s string) func() { fmt.Println("tier up") fmt.Println(s) return func() { fmt.Println("clean up") } } func main() { defer def("defered line")() fmt.Println("main") }
When main()
Go で遅延呼び出しを効果的に使用するには、引数の評価と関数の実行の違いを理解することが重要です。引数は defer ステートメントが実行されるとすぐに評価されますが、関数本体は外側の関数が返されたときにのみ実行されます。これにより、アクションが実行される順序を制御し、予期しない関数の動作に関連する潜在的な問題を回避できます。
以上がGo 遅延呼び出し: 引数はすぐに評価されますか、それとも関数の実行時に評価されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。