• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Go语言函数中的闭包学习

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

   Go函数是可以闭包的。闭包是一个函数值,他来自函数体外部的变量引用

  1. 闭包:外部函数定义的内部函数就是闭包。
  2. 闭包的作用及好处:闭包给访问外部函数定义的内部变量创造了条件。也将关于函数的一切封闭到了函数内部,减少了全局变量,这也是闭包的真实含义。

小demo:  

上边小demo是Go文档中的闭包写法  

pos,neg两个变量分别调用了adder()函数 并将0-10的数作为参数传递 按照平常的思维的结果为:


  adder()函数中的sum的值为0+i 可是打印出的结果为

 

 结果跟想象中的不同 sum+i的值 i没有变 sum的值一定是改变的了 

实际上,在pos, neg := adder(), adder()的时候,pos和neg引用不仅得到了上面的那个闭包,也得到了sum这个在引用中的”闭包变量”,所以实际上每次调用pos(i)和neg(-2 * i),都是改变了sum的值并存在pos引用对应的函数中了,sum的值为上次调用函数的最终结果  

总结: 闭包函数时定义的局部变量是无关操作的 

sum的生命周期是跟接收adder()的变量posneg的声明周期是一致的

:::仅做自我理解


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
如何在 Linux 上使用 x2go 设置远程桌面发布时间:2022-07-10
下一篇:
go vendor目录发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap