defer的执行顺序

参考解析

题目来源:腾讯

答案:

  1. 一个函数中多个defer的执行顺序

    defer的作用就是把defer关键字之后的函数压入一个栈中延迟执行,多个defer的执行顺序是后进先出

  1. package main
  2. import "fmt"
  3. func main() {
  4. defer fmt.Println("1")
  5. defer fmt.Println("2")
  6. defer fmt.Println("3")
  7. }
  8. // 输出
  9. // F:vmware_kuberneteskubernetes_kind_pro >go run main.go
  10. // 3
  11. // 2
  12. // 1
  1. defer、return、返回值的执行返回顺序

    return最先执行,先将结果写入返回值中(即赋值);接着defer开始执行一些收尾工作;最后函数携带当前返回值退出(即返回值)。