golang匿名函数和闭包

匿名函数和闭包:

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

func closure(x int) (func(), func(int)) {
    fmt.Printf("初始值x为:%d,内存地址:%p\n", x, &x)
    f1 := func() {
        x = x + 5
        fmt.Printf("x+5:%d,内存地址:%p\n", x, &x)
    }
    f2 := func(y int) {
        x = x + y
        fmt.Printf("x+%d:%d,内存地址:%p\n", y, x, &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中的函数和闭包
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值