加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang匿名函数和闭包

发布时间:2020-12-16 18:55:32 所属栏目:大数据 来源:网络整理
导读:匿名函数和闭包: 闭包和匿名函数经常一起使用,可以使用闭包来访问函数中的局部变量(被访问操作的变量为指针指向关系,操作的是同一个局部变量)如: func closure(x int) (func(),func(int)) { fmt.Printf("初始值x为:%d,内存地址:%pn",x,x) f1 := fu

匿名函数和闭包:

闭包和匿名函数经常一起使用,可以使用闭包来访问函数中的局部变量(被访问操作的变量为指针指向关系,操作的是同一个局部变量)如:

func closure(x int) (func(),func(int)) {
    fmt.Printf("初始值x为:%d,内存地址:%pn",x,&x)
    f1 := func() {
        x = x + 5
        fmt.Printf("x+5:%d,内存地址:%pn",&x)
    }
    f2 := func(y int) {
        x = x + y
        fmt.Printf("x+%d:%d,内存地址:%pn",y,&x)
    }
    return f1,f2
}
func main() {
    func1,func2 := closure(10)
    func1()
    func2(10)
    func2(20)
}
输出结果为:
初始值x为:10,内存地址:0xc080000038
x+5:15,内存地址:0xc080000038
x+10:25,内存地址:0xc080000038
x+20:45,内存地址:0xc080000038

个人理解:

其实理解闭包的最方便的方法就是将闭包函数看成一个类,一个闭包函数调用就是实例化一个类。但很遗憾的是,目前我还无法领会闭包设计思想背后的精髓含义以及其所蕴含的哲学思想。

参考

关于golang中函数可参考如下一些资料,可能会有助于理解golang中的函数和闭包
http://www.cnblogs.com/yjf512/archive/2012/12/09/2810313.html
http://www.ibm.com/developerworks/cn/linux/l-cn-closure/index.html
http://wklken.me/posts/2014/03/02/05-func.html
http://my.oschina.net/u/698121/blog/157599
http://ieqi.net/2013/03/11/%E7%9C%8B%E8%8C%83%E4%BE%8B%E5%AD%A6-golang- %EF%BC%88%E5%8D%81%E4%BA%94%EF%BC%89-%E9%97%AD%E5%8C%85/
http://www.fenby.com/course/units/1015#top

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读