MST

星途 面试题库

面试题:Go语言中defer执行顺序基础考察

在Go语言中,以下代码的输出是什么?请说明原因。 ```go package main import "fmt" func main() { defer fmt.Println(1) defer fmt.Println(2) fmt.Println(3) } ```
48.1万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试

输出为:

3
2
1

原因:defer 语句会将其后面跟随的语句延迟到包含该 defer 语句的函数即将返回时才执行。多个 defer 语句会按照后进先出(LIFO,Last In First Out)的顺序执行。在上述代码中,先执行 fmt.Println(3) 输出 3,然后按照 defer 后进先出的顺序,先执行 fmt.Println(2) 输出 2,最后执行 fmt.Println(1) 输出 1