在之前一篇文章从lock_guard来说一说C++中常用的RAII讲解了RAII,其实一种常见的资源管理方式,减少了资源泄露的风险。同事和我说是不是就是智能指针,准确来说RAII是一种思想,一般是利用栈上对象初始化进行资源的申请,在其生命周期结束的时候,自动调用其析构函数,对资源进行释放。比如std::string,std::lock_guard都属于RAII的一种实现,那么对于不同资源的管理我是否都要实现一个类似于std::lock_guard一样的实现,其实不然,这样写代码多么费劲。那么有没有类似于golang中defer的实现呢,在函数退出的时候,自动调用一些代码,比如实现资源释放?是可以的,我们一起来看一看吧。
golang中的defergolang的一段代码如下,这段代码比较简单,就是打开文件,然后读取文件内容。我们需要