Golang には defer という特別な制御ステートメントがあり、リソースの解放など、指定された関数の呼び出しを遅らせるために使用されます。関数の終わりですが、Return の前に、、コードを簡単に理解しましょう: (推奨学習: Go )
package main func main() { test() }func test() { println("test1") defer func() { println("defer test2") }() println("test3") }
## 実行結果は次のとおりです。 : ## 在##遅延を伴う関数が最後に実行されることは明らかです
コードを変更して、コードをパニックにします。例外がスローされると、遅延遅延関数は実行されますか?まだ処刑されるの?
test1 test3 defer test2
package main func main() { test() }func test() { println("test1") panic("panic") defer func() { println("defer test2") }() println("test3") }
test1
panic: panic
Process finished with exit code 2
出力
package main func main() { test() }func test() { println("test1") defer func() { println("defer test2") }() panic("panic") println("test3") }
以上がgolang defer はいつ実行されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。