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()
}