使用 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。