17_defer(延迟调用)关键字的使用

1、defer是延迟调用关键字,只能在函数内部使用
2、总是在main函数结束前调用(和init用法相对)
3、如果有多个defer 遵循先进后出的原则
4、和匿名函数同时使用时,如果匿名函数带有参数,则先把参数传进去,最后调用


例如:

package main

import "fmt"
func Test() {
	defer fmt.Println("111111")             //最后执行
	defer fmt.Println("222222")             //其次
	defer fmt.Priiota_test.gontln("333333") //最先执行这个

}

func main() {

	a := 1
	b := 2
	defer fmt.Println(a, b) //1,2 先把参数传进去,然后执行后面的程序,最后在main函数结束前执行这个
	defer func(a, b int) {
		fmt.Printf("a1=%d,b1=%d
", a, b)
	}(a, b) //先把参数传进去,最后按顺序执行defer语句
	a = 4
	b = 6
	fmt.Println("a=", a, "b=", b)
	Test()
}

运行结果:

                      

每天的价值就是不停息的前进!!!
原文地址:https://www.cnblogs.com/zhaopp/p/11439430.html