使用 defer 释放资源
发布者:admin 发表于:439天前 阅读数:592 评论:0

使用 defer 释放资源,诸如文件和锁。

Bad Good

p.Lock() if p.count < 10 { p.Unlock() return p.count }

p.count++ newCount := p.count p.Unlock()

return newCount

// 当有多个 return 分支时,很容易遗忘 unlock |

p.Lock() defer p.Unlock()

if p.count < 10 { return p.count }

p.count++ return p.count

// 更可读 |

Defer 的开销非常小,只有在您可以证明函数执行时间处于纳秒级的程度时,才应避免这样做。使用 defer 提升可读性是值得的,因为使用它们的成本微不足道。尤其适用于那些不仅仅是简单内存访问的较大的方法,在这些方法中其他计算的资源消耗远超过 defer