GO语言-defer关键字

本文介绍了Go语言中的defer关键字,它用于延迟函数的执行,确保资源的正确释放。文中通过示例展示了defer如何处理文件关闭,并解释了多个defer语句的执行顺序,即逆序执行。此外,还探讨了defer语句中参数传递的特点,说明了参数在defer调用时已确定,后续代码对参数的修改不会影响defer语句的行为。
摘要由CSDN通过智能技术生成

前言

在GO语言中,使用defer关键字延迟一个函数或者方法的执行。defer语句会在所有函数最后去执行。

列如,open打开一个文件,可能最后会忘记close。可以在一开始使用defer close,延迟执行close。

多个defer的执行顺序

当函数中出现多个defer语句,则在函数的最后逆序执行defer语句。(遵循栈的操作,先进后出)

func main() {
	defer fmt.Println("defer测试完毕")
	defer fmt.Println("world")
	defer fmt.Print("hello ")
	fmt.Println("测试defer")
}

defer语句的参数传递

如果defer语句遇到了参数传递。实际上,defer语句调用时参数就已经传递了,只是相关函数和语句会被放到函数的最后执行。后续语句对于参数的修改和先前的defer语句就没有关系了。

func main() {
	num := 10
	fmt.Println("定义num:", num)
	defer fmt.Println("defer参数传递 num:", num)

	num *= 2
	fmt.Println("计算后的num:", num)
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值