golang defer 延时机制

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
	*/
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值