闭包
闭包对闭包外的环境引入是直接引用,编译器监测到闭包,会将闭包饮用的外部变量分配到堆上
package main
func fa(a int) func(i int) int {
    return func(i int) int {
        fmt.println(&a)
        a = a + i
        return a
    }
}
func main() {
    f := fa(1)  //此时f和g引用的闭包环境中的a不是同一个,而是函数调用产生的副本
    println(f(1)) // 1
    println(f(1)) // 2 多次调用f引用的a是同一个a
}
0xc00000a0d0
2
0xc00000a0d0
3
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号