go-defer

defer

Defer is used to delay calling the specified function. Defer can only appear inside the function. Because of the delay characteristics of defer, the defer statement can be used to reclaim resources, clean up resources, etc.

Simple example

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

Output

welcome to golang !
defer execute.

Example 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

Because defer is executed last, i is already 10 at this time

Example 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

When a function has multiple defers, the last statement is executed first

Example 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")
}

defer execute 4.
defer execute 3.
defer execute 2.
defer execute 1.

Guess you like

Origin blog.csdn.net/kq1983/article/details/113135052