golang 闭包
匿名函数定义
未指定函数名的函数被称为匿名函数。
Golang 匿名函数的三种声明方法
1. 在定义时调用匿名函数 这种方式是将匿名函数直接定义在语句中,并立即调用。语法格式如下:
|
|
2. 将匿名函数赋值给变量 这种方式是将匿名函数赋值给一个变量,然后通过变量来调用匿名函数。语法格式如下:
|
|
3. 将匿名函数作为参数传递 这种方式是将匿名函数作为参数传递给另一个函数。语法格式如下:
|
|
使用匿名函数创建闭包
闭包定义
闭包是由函数和与其相关的引用环境组合而成的实体
- 闭包对外函数的变量的修改,是对变量的引用
- 变量被引用后,它所在的函数结束,这变量也不会马上被销毁
- 闭包函数保存并积累其中的变量的值,不管外部函数退出与否,它都能够继续操作外部函数中的局部变量。
- 在闭包中使用到的变量可以是在闭包函数体内声明的,也可以是在外部函数声明的。
- 一个返回值为另一个函数的函数可以被称之为工厂函数,这在需要创建一系列相似的函数的时候非常有用:书写一个工厂函数而不是针对每种情况都书写一个函数。
- 闭包会发生变量逃逸,原因如 2
如何构造闭包
- 被嵌套的函数引用到非本函数的外部变量,而且这外部变量不是 全局变量。
- 嵌套的函数被独立了出来(被父函数返回或赋值,变成了独立的个体),而被引用的变量所在的父函数已结束。
这段golang闭包代码运行结果是什么 为什么是这个结果
|
|