ホームページ > バックエンド開発 > Golang > golang defer はいつ実行されますか?

golang defer はいつ実行されますか?

(*-*)浩
リリース: 2019-12-03 10:00:45
オリジナル
2635 人が閲覧しました

golang defer はいつ実行されますか?

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")
}
ログイン後にコピー
遅延関数が実行されません。これはなぜですか?これは、panic が遅延関数の前にあるためです。次のようにコードを変更します。

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 サイトの他の関連記事を参照してください。

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