下面这段代码正确的输出是什么?

package main

import "fmt"

func f() {
    defer fmt.Println("D")
    fmt.Println("F")
}

func main() {
    f()
    fmt.Println("M")
}
  • A. F M D
  • B. D F M
  • C. F D M

C

在线运行

defer 语句在返回之前就会被执行,所以输出顺序是 F D M。