MST

星途 面试题库

面试题:Go 中 defer 语句在函数返回时的执行顺序是怎样的

请描述在 Go 语言中,当一个函数包含多个 defer 语句时,在函数返回时这些 defer 语句的执行顺序,并举例说明。
40.0万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
  1. 执行顺序: 在Go语言中,当一个函数包含多个defer语句时,这些defer语句会按照后进先出(LIFO,Last In First Out)的顺序执行,即在函数即将返回时,最后声明的defer语句最先执行。
  2. 示例代码
package main

import "fmt"

func main() {
    defer fmt.Println("defer 1")
    defer fmt.Println("defer 2")
    defer fmt.Println("defer 3")

    fmt.Println("main function")
}
  1. 输出结果: 上述代码的输出为:
main function
defer 3
defer 2
defer 1

从输出结果可以看出,defer语句按照后进先出的顺序执行。