兄弟连区块链技术培训分享Go语言之defer的执行

兄弟连区块链培训 · · 1112 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

  互联网二十多年,已到十字路口。区块链出现前的互联网被称为古典互联网,而应用区块链技术的互联网才进入了后互联网时代。作为一项新兴的技术,区块链无疑正处于风口浪尖之上,其发展前景于普通大众而言也终将是利好。但目前由于区块链技术处于发展早期阶段,存在技术成熟度、落地应用场景有限等问题,兄弟连教育建议用户在选择专业Go语言+区块链培训机构前应进行仔细考量与辨别。

golang中defer的执行

大家都知道golang的defer关键字,它可以在函数返回前执行一些操作,最常用的就是打开一个资源(例如一个文件、数据库连接等)时就用defer延迟关闭改资源,以免引起内存泄漏。例如:

func do() (ok bool) {

  file,_ := os.Open("c:\a.txt")

  defer file.Close()

  // doSomething

  return ok

}

我们可以在官方的文档中看到defer的执行顺序是逆序的,也就是先进后出的顺序:


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

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

}

打印结果是:4,3,2,1,0


那么再看这个例子:


func deferRet(x,y int) (z int){

  defer z += 100

  z = x + y

return z + 50 // 执行顺序 z = z+50 -> (call defer)z = z+100 -> ret  

}


func main() {

  i := deferRet(1,1)

  println(i)  // print 152

}

高能预警,兄弟连教育区块链直播课程8月持续火爆来袭!

原价1188元的12节区块链进阶课程,现仅需1元!

还可免费领取《Go语言基础实战项目开发》与《Go语言高级实战项目开发》教材两本!!限时限量!!先到先得!!

http://www.ydma.cn/open/course/24 

关注兄弟连区块链技术公众号领取更多技术干货哦!!! 


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:兄弟连区块链培训

查看原文:兄弟连区块链技术培训分享Go语言之defer的执行

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1112 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传