基本的なプログラミングを行く:呼び出し延期を遅らせるために

開発者や学生のために設計チェーンオフ、インサイダー!

この記事ブロック鎖技術コミュニティは、許可なく複製拒否しました。

ここに画像を挿入説明

この記事で論じては、延期コミュニティのより多くの助けのメンバーを持っていると思ってい呼び出す遅らせるためにプログラミングを行っています。

1つの延期アクション

現在作成中の関数、または無名関数の実行方法を遅らせるために、キーワード延期を使用してください。唯一の関数やメソッド内に表示することができ文を延期します。

FUNCのメイン(){

fmt.Println("this is a test")

defer fmt.Println("this is a defer") //main结束前调用

/*

結果:

    this is a test

    this is a defer

*/

}

文が延期機構を介してのペアを動作させるために処理されて延期にかかわらず、論理関数の複雑さの、いずれかの実行パスで、リソースが解放されていることを確認することができます。リソースの解放を要求されたリソース文の真後ろにする必要があります。

と併せて2つの延期と無名関数

FUNCのメイン(){

a, b := 10, 20

defer func(x int) { // a以值传递方式传给x

    fmt.Println("defer:", x, b) // b 闭包引用

}(a)

a += 10

b += 100

fmt.Printf("a = %d, b = %d\n", a, b)

/*

結果:

    a = 20, b = 120

    defer: 10 120

*/

}

3の複数の実行順序を延期

延期文で複数の機能がある場合、それらは注文LIFOで実行されるの(最初のうち、の最後)。でも遅延関数呼び出しやエラーが発生し、これらの呼び出しは、まだYESになります。

FUNC試験(Xはint){

fmt.Println(100 / x)//x为0时,产生异常

}

FUNCのメイン(){

defer fmt.Println("aaaaaaaa")

defer fmt.Println("bbbbbbbb")

defer test(0)

defer fmt.Println("cccccccc")

/*

結果:

cccccccc

bbbbbbbb

aaaaaaaa

panic: runtime error: integer divide by zero

*/

}

おすすめ

転載: blog.csdn.net/weixin_44172023/article/details/93715171