面试题答案
一键面试- 输出结果:
3 2 1
- 原因解释:
- 在Go语言中,
defer
语句会将其后面跟随的函数推迟到包含该defer
语句的函数结束时执行。 - 当执行
defer fmt.Println(1)
时,fmt.Println(1)
函数被推迟执行。 - 接着执行
defer fmt.Println(2)
,fmt.Println(2)
函数也被推迟执行。 - 然后执行
fmt.Println(3)
,所以先输出3
。 - 当
main
函数结束时,按照defer
语句后进先出(LIFO,Last In First Out)的顺序执行被推迟的函数。所以先执行fmt.Println(2)
,输出2
,再执行fmt.Println(1)
,输出1
。
- 在Go语言中,