go语言学习10(defer)

defer后面紧跟的一条语句会被压入独立的栈中,当程序段结束后会依次弹栈执行。

注意:当defer语句压入栈中时,也会将相关的变量同时拷贝入栈(不会改变执行结果),看个例子,如下

func sum(n int) int{

           var n = 10

           defer fmt.Println(“befor”,n) //后输出这句—befor10

           n = n + 1

           fmt.Println(“after”,n) //先输出这句—after11

}

defer主要是为了延时释放资源,防止释放步骤的遗忘。程序员不用为在什么时机释放资源而担心,也不用担心遗漏释放动作。看个示例:

func test(){

           file = openfile(文件名)

           defer file.close()

           //other code

          

           connect = openDatabase()

           defer connect.close()

           //other code

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值