go-defer

延期

Deferは、指定された関数の呼び出しを遅らせるために使用されます。deferは、関数内にのみ表示されます。deferの遅延特性により、deferステートメントは、リソースの再利用、リソースのクリーンアップなどに使用できます。

簡単な例

func demo1()  {
	defer fmt.Printf("defer execute. \n")
	fmt.Printf("welcome to golang ! \n")
}

出力

golangへようこそ!
実行を延期します。

例2

var i = 0
func printI()  {
	fmt.Printf("i=%d \n",i)
}

func demo2()  {
	for ;i<10;i++ {
		defer printI();
	}
}

i = 10
i = 10
i = 10
i = 10
i = 10
i = 10
i = 10
i = 10
i = 10
i = 10

deferは最後に実行されるため、この時点でiはすでに10です。

例3

var j=0
func printJ(j int)  {
	fmt.Printf("j=%d \n",j)
}
func demo3()  {

	for ;j<10;j++ {
		defer printJ(j);
	}

}

j = 9
j = 8
j = 7
j = 6
j = 5
j = 4
j = 3
j = 2
j = 1
j = 0

関数に複数の遅延がある場合、最後のステートメントが最初に実行されます

例4

func demo4()  {
	defer fmt.Printf("defer execute 1. \n")
	defer fmt.Printf("defer execute 2. \n")
	defer fmt.Printf("defer execute 3. \n")
	defer fmt.Printf("defer execute 4. \n")
}

実行を延期する4.実行を
延期する3.実行を
延期する2.
実行を延期する1。

おすすめ

転載: blog.csdn.net/kq1983/article/details/113135052