Go的defer知识点
defer后面的部分必须是函数调用,其次,如果有多个函数调用,它会使用最后一个。也就是说如果defer后面跟了一个函数A,A返回了一个函数B,并且调用了它,那么defer在声明的时候会先调用A,在触发defer的时候再调用B
package main func f() { defer func() { // 这里的代码会在触发defer时执行 }() } func main() { f() }
package main func f(){ defer func() { // 这里的代码会立刻执行 return func(){ // 这里的代码会在触发defer时执行 } }()() // 注意这里有两个括号,表示defer最终调用的是返回的函数,如果没有最后一个()那么结果和上面的例子一样 } func main() { f() }