在写软件过程中需要与一些文件或者数据库进行交互操作,在这个过程中需要对这些资源进行打开或关闭处理。
go语言 可以用defer来对资源进行管理,(defer是一个入栈操作,先进后出)。
什么时候需要对资源进行管理呢?比如成对的操作
1、open/close
2、lock/unlock
3、printHeader/printFooter
eg:
//Money 钱
type Money struct {
lock sync.Mutex // 锁
amount int64
}
//Add 加钱
func (m *Money) Add(i int64) {
// 加锁
m.lock.Lock()
// 在该函数结束后执行
defer m.lock.Unlock()
m.amount = m.amount + i
}