package mainimport "fmt"func main() {    /*               函数式编程:                      支持将函数作为另一个函数的参数, 叫回调函数                      支持将函数作为另一个函数的返回值        一个函数有内层函数,该内层函数中,还会操作外层函数的局部变量,(外层函数中定义,外层函数的参数)并且该外层函数的返回值就是这个内层函数        该内层函数和局部变量,统称闭包结构, closure 闭包函数不会随执行结束而自动销毁    */    res := increment()    fmt.Println(res)    //fmt.Printf("%T", res)    fmt.Println(res())    // 闭包生命周期    res1 := res()    fmt.Println(res1)    res2 := res()    fmt.Println(res2)    res3 := res()    fmt.Println(res3)    //重新开辟内层给变量    res4 := increment()    res5 := res4()    fmt.Println(res5)}func increment() func() int { // increment 外层函数    i := 0    fun := func() int {        i++        return i    }    return fun //将内层函数返回 ,本质是返回该内存函数的地址    // return func()  // 将内层函数的执行结果 返回}