教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 golang defer避免资源泄漏

golang defer避免资源泄漏

发布时间:2023-03-03   编辑:jiaochengji.com
教程集为您提供golang defer避免资源泄漏等资源,欢迎您收藏本站,我们将为您提供最新的golang defer避免资源泄漏资源

写过c语言的同学都知道,如果稍加不小心,我们就会造成资源内存的泄漏,如果在golang语言中避免这个问题呢?或者说减少资源泄露的可能性?答案就是defer.

在打开资源语句的下一行,就可以直接用 defer语句来注册函数结束后执行关闭资源的操作。比如数据库连接、文件、锁等,这些资源需要在用完之后释放掉,否则会造成内存泄漏。我们就可以在打开之后,使用defer避免资源泄漏。

f, err :=os.Open(filename)

if err != nil{
    panic(err)
}

if f != nil{
    defer f.Close()
}

原理

每次defer语句执行的时候,会把函数“压栈”,函数参数会被拷贝下来;当外层函数(非代码块,如一个for循环)退出时,defer函数按照定义的逆序执行;如果defer执行的函数为nil, 那么会在最终调用函数的产生panic.


到此这篇关于“golang defer避免资源泄漏”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
Golang基础--常见坑
golangdefer特性姿势还是有必要了解下的!!!
Golang defer解读
golang struct 字段null_给大家丢脸了,用了三年golang,我还是没答对这道内存泄漏题。...
golang http client 使用gzip_一次gRPC使用不当导致goroutine泄漏排查记录
golang编程技巧:利用GC机制优雅地关闭协程,避免内存泄漏
golang垃圾回收
Golang 内存泄漏场景
golang 切片截取 内存泄露_怎么看待Goroutine 泄露
golang 内存泄漏

[关闭]
~ ~