Go基础(闭包_1)
package main
import "fmt"
func adder() func(int) int {
fmt.Println(1)
var x int
return func(y int) int {
fmt.Println(2)
x += y
return x
}
}
func main() {
fmt.Println(0)
var f = adder() // 返回一个 func(y int) int,此时 x = 0,y 还没有参数
fmt.Println(3)
fmt.Println(f(10))
fmt.Println(4)
fmt.Println(f(20))
fmt.Println(5)
// 0 main 函数开始
// 1 adder 内部执行,返回一个 func(y int) int,此时 x = 0,y 还没有参数
// 3
// 2 f(10) 相当于给匿名函数传参, y = 10, x = 0 + 10
// 10
// 4
// 2 f(20) 相当于给匿名函数传参, y = 20, x = 10 + 20
// 30
// 5
}