2 defer:

(1). 概念:


①. 当函数返回时,执行defer语句.因此,可以用来做资源清理.

②. 多个defer语句,按先进后出的方式执行(最晚的先执行).

③. defer语句中的变量,在defer声明时就决定了.

④. 举例:

  var a int = 111

  defer fmt.Println(a)      // 第3执行,打印值为111.在defer定义时,是什么值就是什么值.跟后面没关系.

  defer fmt.Println("333")  // 第2执行,因为先进后出,先入栈后出.

  a = 222

  fmt.Println(a)            // 第1执行

  结果:

  222

  333

  111