1 个回答
defer 的执行顺序遵循“后进先出”(LIFO)原则,因为:
栈式存储:defer 调用被压入一个栈结构,每个 defer 调用的参数和函数在声明时就被计算并存储。
执行时机:当函数即将返回时(包括正常返回或 panic),栈中的 defer 调用按逆序逐个执行。
示例代码如下:func main() {
defer fmt.Println(1) // 最后执行
defer fmt.Println(2) // 先执行
fmt.Println("Start")
}
// 输出:Start → 2 → 1
发布于:1周前 (04-22) IP属地:
我来回答
您需要 登录 后回答此问题!