Go的defer知识点

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()
}
Comments are closed.