有什么办法可以取消延期声明

时间:2020-05-29 14:31:24

标签: go deferred-execution

假设我有类似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()
}

0 个答案:

没有答案
相关问题