Go-闭包

package main

import "fmt"

// 闭包
// 实现: 在一个函数内部返回一个匿名函数: 1. 在函数内嵌套定义一个函数 2. 然后返回该函数
// 特征: 匿名函数内部可以引用(修改其值+读取其值)外层函数的变量
// 特殊: 按理函数执行完毕(return 或 函数结尾),所创建的名称空间会被释放掉
// 但返回另一个函数对象,外层函数的命名空间并没有释放掉

// 应用: Python中的装饰器

// AddIterator 累加器
func AddIterator(i int) func(n int) int {
	return func(n int) int {
		i += n
		return i
	}
}

func main() {
	a := AddIterator(10)
	r1 := a(1)
	fmt.Println(r1)

	r2 := a(2)
	fmt.Println(r2)

	r3 := a(3)
	fmt.Println(r3)
}

  

posted @ 2021-02-21 17:29  梦_鱼  阅读(38)  评论(0编辑  收藏  举报