defer:延迟。
假设有调用函数A、被调用函数B,其关系如下:
func A(){//调用函数 ... defer B()//被调用函数 ... return//B将延迟到return前执行 }
*defer是延迟执行关键字,将使B延迟到A return前执行。
*可在A中添加多个defer,在函数将要return时,这些defer语句按逆序执行。
*defer通常用于释放资源。
*其具体执行过程参考:http://studygolang.com/articles/2593
优点:
1.将申请资源和释放资源的代码写在一起,可以保证资源被释放,避免错误
2.在发生不同错误需要提前return时,无需重复编写释放资源相关语句
参考:http://my.oschina.net/golang/blog/77523
缺点:
假设申请了较大的资源,当这个资源不再使用时,应该及时被释放。
但若使用了defer关键字,资源将有可能得不到及时释放。
参考:http://blog.csdn.net/eclipser1987/article/details/12089271
-----------------------------------------------------
* 本文是根据自身经验所作,难免存在不合理之处。
有疑问加站长微信联系(非本文作者)