defer

package main

import "fmt"
// defer 把函数放到栈中,最先定义的最后执行
func a() {
    i := 0
    defer fmt.Println(i) // 放到函数栈中的时候也把值传入进去了
    i++
    defer func(i int) {
        fmt.Println(i) // 放到函数栈中的时候也把值传入进去了
    }(i)
    defer func() { // 使用的是全局变量
        i++
        fmt.Println(i)
    }()

    return
}
func main() {
    a()  // 2 , 1 ,0
}

 

posted on 2022-10-17 13:23  running-fly  阅读(9)  评论(0编辑  收藏  举报

导航