假设我有类似sudo代码(在golang中)的内容,有什么方法可以取消先前设置的延后操作以避免重复调用。
func Exec(s Store)err {
item, err := s.CreateItem()
if err != nil {
return err
}
defer s.CloseItem()
err = item.DoSomething()
if err != nil {
return err
}
err = item.DoSomething2()
if err != nil {
return err
}
err = item.DoSomething3()
if err != nil {
return err
}
// here I would like to cancel the defer to avoid a double call to CloseItem
val := s.CloseItem()
return val.DoSomethingElseThatRequiresCallToCloseItemFirst()
}