mirror of
https://gitee.com/shikong-sk/golang-study
synced 2025-02-24 16:02:15 +08:00
27 lines
386 B
Go
27 lines
386 B
Go
|
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)
|
||
|
}
|