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

GO语言理解闭包

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

什么是闭包?

  闭包是指能够读取函数内部变量的函数,一般来说只有函数内部的子函数才能读取该函数的局部变量,GO语言就是这种方式。

  GO语言支持匿名函数,可作为闭包。

如下是菜鸟教程上的一个例子;

package main

import "fmt"

func getSequence() func() int {
   i:=0
   return func() int {
      i+=1
     return i  
   }
}

func main(){
   /* nextNumber 为一个函数,函数 i 为 0 */
   nextNumber := getSequence()  

   /* 调用 nextNumber 函数,i 变量自增 1 并返回 */
   fmt.Println(nextNumber())
   fmt.Println(nextNumber())
   fmt.Println(nextNumber())
   
   /* 创建新的函数 nextNumber1,并查看结果 */
   nextNumber1 := getSequence()  
   fmt.Println(nextNumber1())
   fmt.Println(nextNumber1())
}

以上代码执行结果为:

1 2 3 1 2

通过上面例子,可知闭包的作用:

  • 延长局部变量的生命周期(i)
  • 让函数外部能操作内部的局部变量(main函数通过匿名函数操作了局部变量i)

可以简单理解为闭包和外层局部变量统称为闭包结构,闭包不会随着执行结束而自行销毁,导致局部变量未销毁,当没有变量引用闭包时,闭包才会销毁(比如将nextNumber =null)


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
【go】2-环境搭建-开发环境搭建发布时间:2022-07-10
下一篇:
Go-数组发布时间: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