面试题答案
一键面试在Go语言中,多个defer
语句的执行顺序是后进先出(LIFO),也就是最后定义的defer
语句最先执行。
以下是代码示例:
package main
import "fmt"
func main() {
fmt.Println("开始执行")
defer fmt.Println("第一个defer")
defer fmt.Println("第二个defer")
defer fmt.Println("第三个defer")
fmt.Println("执行结束")
}
上述代码输出结果为:
开始执行
执行结束
第三个defer
第二个defer
第一个defer
原因是defer
语句在定义时,会将其放入一个栈中。当函数执行完毕,需要进行资源清理时,会从这个栈中按照后进先出的顺序依次取出defer
语句并执行,这就保证了资源按照合理的顺序被清理,例如在文件操作中,先打开的文件后关闭,符合资源管理的逻辑。