闭包的最初目的是为了减少全局变量,在函数调用过程中,隐式的传递共享变量。

但这样的编辑,带来的坏处是不够直接清晰。

所以,如非必要,不要使用。

对象是附有行为的数据,它在类中集中定义,

而闭包是附有数据的行为,没有显式集中定义的地方。

所以,它不是不可或缺的(或许在早期的js技术中,闭包是必须的吧)。

~~~~~~~~~~~~~~~~~~~~~~~

package main

import (
	"fmt"
)

func fa(a int) func(i int) int {
	return func(i int) int {
		fmt.Println(&a, a)
		a = a + i
		return a
	}
}

func main() {

	f := fa(1)
	g := fa(1)

	fmt.Println(f(1))
	fmt.Println(f(1))

	fmt.Println(g(1))
	fmt.Println(g(1))

}

  输出如下:

D:/Go/Development/src/demo/demo.exe  [D:/Go/Development/src/demo]
0xc0420082e0 1
2
0xc0420082e0 2
3
0xc0420082e8 1
2
0xc0420082e8 2
3
成功: 进程退出代码 0.

  

最新文章

  1. ubuntu中查看已有的mysql用户并修改用户名和密码
  2. Altium Designer XX 重新定义板框形状和大小的方法
  3. centos python2.6升级到2.7 还有单独的python3.5环境
  4. HTTP协议请求方式: 中GET、POST和HEAD的介绍以及错误提示码
  5. USB Mass Storage大容量存储的基本知识
  6. DynamicResource与StaticResource的区别
  7. javsscript总结
  8. oracle的insert的时候&符号如何插入(转义)
  9. JavaScript获取地址栏中的参数
  10. 28 自定义View侧滑栏
  11. How to change from default to alternative Python version on Debian Linux
  12. es6 this指向
  13. Selenium自动化Chrome浏览器 在windows下窗口最大化
  14. Testlink1.9.17使用方法(第一章 前言)
  15. JVM高手之路七(tomcat调优以及tomcat7、8性能对比)
  16. 003 使用SpringMVC开发restful API--查询用户
  17. JAVA:IDEA安装、创建项目、tomcat配置、maven配置(1)
  18. .NETCore_初探
  19. Java使用Spring初识
  20. Spring框架的事务管理的分类

热门文章

  1. HDOJ 1698 Just a Hook (线段树)
  2. Shell-find . -type f -name "*.php" -print0 | xargs -0 wc -l
  3. dubbo源码分析13——服务本地暴露 exportLocal(url)
  4. Alpha 冲刺 (2/10)
  5. Fiddler对https抓包时,提示"HTTPS decryption is disabled."
  6. $Django 前后端之 跨域问题(同源策略) vue项目(axios跨域请求数据)
  7. java乱码问题解决
  8. 《深入理解Oracle 12c数据库管理(第二版)》PDF
  9. Confluence 6 其他 MBeans 和高 CPU 消耗线程
  10. Confluence 6 MySQL 问题解决