func calc(x, y int) int {
fmt.Println(x, y, x+y)
return x + y
}
func main() {
a := 1
b := 2
defer calc(a, calc(a, b))
a = 0
defer calc(a, calc(a, b))
}
执行结果

1.defer是栈调用,后写的先执行
2.defer的函数调用语句会在父函数调用后执行,但是用到的参数会在当时就执行得出
本文通过一个具体的Go语言代码示例介绍了defer关键字的工作原理。详细分析了如何使用defer进行函数调用,特别是在多个defer语句并存时的执行顺序,并解释了参数在父函数返回前就已经确定的特点。
979

被折叠的 条评论
为什么被折叠?



