zoukankan      html  css  js  c++  java
  • (十七)golang--闭包(简单明了)

    所谓闭包:就是一个函数和其相关的引用环境组合的一个整体;

    首先,有如下一个小例子,最终的输出结果是什么呢?是输出11,12吗?

     对上述代码说明:
    (1)addUpper是一个函数,返回的是func(int) int;

    (2)func(int) int引用函数外的n,因此这个匿名函数和n形成了一个闭包;

    (3)可以这么理解,闭包是类,函数是操作,n是字段;

    (4)当我们反复调用f函数时,因为n是初始化一次,因此每调用一次就进行累计;

    (5)搞清楚闭包的关键,就是分析出返回的函数和它引用到哪些变量形成闭包;

    闭包小例子:判断文件名后缀是否是jpg,如果是直接返回文件名,否则给文件加上.jpg

     我们使用正常的方法实现小例子:

     注意到闭包和正常的区别没?闭包只需要传入一次".jpg"就行了,而正常的则需要每次都需要传入。

    则闭包有什么优点呢?

    显然就是:

    (1)能够读取函数内部的变量;

    (2)让变量长期贮存在内存中,不会在调用结束后被垃圾回收机制回收,因为该变量一直被其它函数引用;

    缺点额也很明显:内存消耗很大;

  • 相关阅读:
    【每日日报】第五十三天安装My SQL
    【每日日报】第五十一天jsp
    【每日日报】第五十四天
    JDK安装和卸载
    JDK的卸载和安装
    【每日日报】第五十二天
    【每日日报】第五十六天
    基于图书管理系统的查
    Android学习——day5
    每日日报2020.7.26 1905
  • 原文地址:https://www.cnblogs.com/xiximayou/p/11882545.html
Copyright © 2011-2022 走看看