MST

星途 面试题库

面试题:Go中defer语句的执行顺序问题

请分析以下Go代码的输出结果,并解释原因: ```go package main import "fmt" func main() { defer fmt.Println(1) defer fmt.Println(2) fmt.Println(3) } ```
47.8万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
  1. 输出结果
    3
    2
    1
    
  2. 原因解释
    • 在Go语言中,defer语句会将其后面跟随的函数推迟到包含该defer语句的函数结束时执行。
    • defer语句具有后进先出(LIFO,Last In First Out)的特性,类似于栈的操作。
    • 首先执行fmt.Println(3),输出3
    • 然后按照defer语句出现的顺序,最后一个defer fmt.Println(2)先执行,输出2
    • 接着执行第一个defer fmt.Println(1),输出1