Go语言优雅设计之-defer(延迟)


defer是Go语言中的一个关键字,意为"延迟",可以在一个函数中添加多个defer语句,这些被定义的defer语句会在函数返回时逆序执行。

理解和熟练掌握defer的使用会让我们代码更加优雅简洁。


下面举一例子作简要介绍:


需求:写一段代码打开一个文件并进行某些操作,完成后关闭文件。


不用defer的写法:

func ReadWrite() bool{

file.open("fileA")

         //do something

if  a>0 {

file.Close()

return false

}

if a<-1 {

file.Close()

return false

}

file.Close()

return true

}


使用defer的写法:

func ReadWrite() bool {

file.open("fileA")

//do something

defer file.Close()

if a>0 {

return false

}

if a<-1{

return false

}

return true

}

有木有发现代码量少了?

再举一例,倒序打印 5 4 3 2 1

       使用defer的写法 :

for i:=1 ;i<=5 ;i++ {

defer() fmt.Printf("%d " , i)

}

注意:多次调用defer , defer采用后进先出的堆栈模式,所以上例的结果是 :5 4 3 2 1


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值