From a6b328cd99eaafe10e1c954b2caaa8df453183d4 Mon Sep 17 00:00:00 2001 From: Shikong <919411476@qq.com> Date: Tue, 21 Sep 2021 14:05:38 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20Closure=20Function=20=E9=97=AD=E5=8C=85?= =?UTF-8?q?=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- base/function/closure/main.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 base/function/closure/main.go 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) +}