GO语言独有的refer,后面可以跟一个简单语句或者跟一个匿名函数。refer必须处于一个方法或者函数中。
1. 简单理解:refer一定会在一个函数和方法全部执行完之后才会执行。可以理解成析构函数。
2.refer中的语句,在编译过程中就会生成语句,并将语句插入一个栈结构的队列中,遵循先入后出的原则。因此,如果defer运用在循环中,一定要注意这一点。
3.- 如果采用匿名函数形式,可以忽略返回定义,因为defer不会处理返回值。如果传入参数,defer中内容实际是在编译期间就将参数替换为对应的值,并插入到队列中,如下例,实际插入队列的代码为:
fmt.Println(3)
fmt.Println(2)
fmt.Println(1)
fmt.Println(0)