package main
import "fmt"
func fa(a int) func (i int) int{
fmt.Println("&a",&a)
return func(i int) int{
fmt.Println(&a,a)
a=a+1
return a
}
}
func main(){
f:=fa(1)
fmt.Println(f(1))
fmt.Println(f(2))
g:=fa(1)
fmt.Println(g(1))
fmt.Println(g(2))
}
执行结果:
f和g是一个闭包,分别包括了对函数fa形参的引用,该引用和外部变量引用指向相同的地址。