go语言 defer延迟机制

靠父母你是公主,靠男人你是王妃,靠自己你是乞丐。

 

 

func main() {
    res = sum(10, 20)
    fmt.Println("res=", res)
}

func sum(n1 int, n2 int) int {
    // defer使用
    defer fmt.Println("ok1 n1=", n1)
    defer fmt.Println("ok2 n2=", n2)

    res := n1 + n2
    fmt.Println("ok3 res=", res)
    return res
}

defer 注意事项

  1. 当go执行到一个defer时,不会立即执行defer后面的语句,而是将defer后的语句压入到一个栈中,然后再继续执行函数一下语句;
  2. 当函数执行完之后,在从defer栈中,依次从栈顶取出语句执行;
  3. 在defer语句放入到栈时,也会将相关的值拷贝同时入栈;

defer最佳价值就是在函数执行完之后,释放函数创建的资源

posted @ 2023-11-22 10:46  方达达  阅读(3)  评论(0编辑  收藏  举报