MST
星途 面试题库

面试题:Go语言中defer的功能基础

请简述Go语言中defer语句的功能,并且说明在一个函数中有多个defer语句时,它们的执行顺序是怎样的,并举例说明。
42.0万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试

defer语句功能

defer语句用于在函数返回之前执行一些代码,通常用于资源清理,如关闭文件、数据库连接等。即使函数出现恐慌(panic),defer语句定义的函数依然会执行,从而确保资源被正确释放。

多个defer语句执行顺序

在一个函数中有多个defer语句时,它们遵循后进先出(LIFO,Last In First Out)的顺序执行,即最后定义的defer语句最先执行。

举例说明

package main

import "fmt"

func main() {
    fmt.Println("开始执行")
    defer fmt.Println("第一个defer")
    defer fmt.Println("第二个defer")
    fmt.Println("结束执行")
}

上述代码执行结果为:

开始执行
结束执行
第二个defer
第一个defer

从结果可以看出,两个defer语句按照定义的逆序执行。