Golang的defer

简介Golang的defer

为什么需要defer?

在函数中,程序员经常需要创建资源(比如:数据库连接,文件句柄,锁等),为了在函数执行完毕后,及时的释放资源,

func test(){
    connect = openDatabase()
    defer connect.close()
    //其他代码
}

Go的设计者提供了defer(延时机制)


在defer栈中遵循先入后出的机制

func test(){


    defer fmt.Println(3)

    defer fmt.Println(2)

    defer fmt.Println(1)

    fmt.Println("hello")

}

//以上先输出hello,再输出1 ,接着输出2,最后输出 3



在defer将语句放入栈时,也会将相关的值拷贝入栈

image.png


以上结果为 hello 6  5 13  1  2  3

 

文章评论

共有0条评论来说两句吧...

用户名:

验证码:

Top