diff --git a/base/function/closure/main.go b/base/function/closure/main.go new file mode 100644 index 0000000..7aac051 --- /dev/null +++ b/base/function/closure/main.go @@ -0,0 +1,26 @@ +package main + +import "fmt" + +// 闭包函数 +// 闭包函数中 包含了 其外部作用域 的 变量 +// +// 底层原理 +// 1. 函数返回值 +// 2. 变量查找顺序 +func closure(x int) func(int) int { + return func(i int) int { + x += i + return x + } +} + +func main() { + f1 := closure(0) + + i := f1(1) + fmt.Printf("i => %T %+v\n", i, i) + + i = f1(2) + fmt.Printf("i => %T %+v\n", i, i) +}