package main
import(
"fmt"
)
/*
1.当执行到defer时,暂时不执行,会将defer后面的语句压入到独立的栈(defer栈)
2.当函数执行完毕后(如:return),在从defer栈,按照《先入后出》的方式出栈,执行
3.在defer将语句放入到栈时,也会将相关的值拷贝同时入栈,当值入栈后 下面的代码对当前的变量
进行了变得 而栈里面的不会变得还是初始值
*/
func test(n1 , n2 int) int {
defer fmt.Println("n1 = ",n1) //3.res = 1
defer fmt.Println("n2 = ",n2) //2.res = 2
n1++
n2++
res := n1 + n2
fmt.Println("res = ",res) //1.res = 3
return res
}
func main(){
result := test(1,2)
fmt.Println("result = ",result) //4.result = 3
//显示结果
/*
res = 3
n2 = 2
n1 = 1
result = 3
*/
}
golang defer 延时机制
最新推荐文章于 2024-11-04 23:02:11 发布