一架梯子,一头程序猿,仰望星空!
Golang中级特性面试题 > 内容正文

Go语言中的defer有什么作用?


问题简答

Go语言中defer关键字的作用是实现延迟处理,Go程序在执行过程中,当遇到defer关键字的时候,Go语言会将defer关键字后面的函数压入栈中,而不是立即执行,最后当前函数执行完毕后,再将栈内的函数异常弹出执行,也就是defer修饰的函数是在当前函数执行完毕之后才会执行。

问题详解:

defer简单例子

package main

import "fmt"

func main() {
    // 延迟执行语句1
    defer fmt.Println("defer statement 1")
    // 延迟执行语句2
    defer fmt.Println("defer statement 2")
    fmt.Println("Main function")
}

输出结果:

Main function
defer statement 2
defer statement 1

defer修饰的语句最后执行,执行顺序是倒序,defer延时执行机制通常同于关闭文件、网络连接、释放资源等。