• golang中的闭包_closure


    闭包_Closure:
    1.一般情况下,第一类对象都是独立的封闭的存在的,独立的封闭的起作用;
    2.第一类对象可以被创建;
    3.第一类对象可以作为参数传递给其他函数;
    4.第一类对象可以赋值给变量实体;

    5.通常是没有闭包的概念的,因为没有那种特殊的场景;
    6.但是在某些编程语言中(Go/PHP/JS/Python/LUA),将函数也设计为第一类对象;
    7.所以函数可以在运行时创建,这个太特殊了,这个使得我们可以在调用另一个函数的时候,创建一个新的函数.
    8.函数可以作为参数传递给另一个函数;
    9.函数可以赋值给变量实体.

    10.根据第7条的规则,再加上函数可以引用函数外的变量;这就会导致一种特殊的情况出现,什么情况呢,如果新创建函数有引用外部变量,那么当新函数离开创造它的上下文时(函数运行的栈,这个函数通常是匿名函数),会发现那个它引用的变量,也会一起跟随它一起出来了,并没有随着创建那个变量的上下文的结束而释放. 所以结果是:新函数跟它引用的变量一起如同包装成为一个整体.

    11.只要闭包还在被使用,那么闭包引用的变量会一直存在.

    12.闭包作用
      1:保证局部变量的安全性:闭包内声明的局部变量无法从外部修改,因为函数只能被调用,没有其他操作可以操作其内部代码.
      2:将匿名函数作为参数.在另一个函数内部使用其他函数内声明的变量.
      3:将闭包的匿名函数作为返回值.类似装饰器设计.比如说一个函数,传入一个值,然后根据这个变量在这个函数内部生产一个闭包,就叫装饰器,然后返回.

  • 相关阅读:
    学电脑入门与提高
    Autodesk Revit Architecture 2014官方标准教程
    Photoshop移动UI界面设计实用教程 全彩超值版
    中文版SQL Server 2000开发与管理应用实例
    Excel2016数据处理与分析从新手到高手
    云计算(第三版)
    无线局域网搭建与管理
    R语言数据挖掘
    Spring 3.0就这么简单
    SVN使用教程总结
  • 原文地址:https://www.cnblogs.com/keystone/p/13722769.html
Copyright © 2020-2023  润新知