23_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 }