I am thinking about how to write programs like this:
lock1.Lock()
err = performOperation1()
if err != nil {
  lock1.Unlock()
  return err
}
lock1.Unlock()
performExpensiveOperation2()

The lock1 must be locked while performing operation1, and I need to use its 
result to perform operation2. Since operation2 is expensive, I don't want 
to hold the lock while performing it, and lock1.Unlock() needs to be called 
before calling operation2.
Go's defer mechanism doesn't seem to handle this case well since the 
resource is used only within a block and not throughout the function. Is 
there a recommended way to write programs in this case?
I know I could wrap the lock block in a closure, but that creates a 
completely new scope, so I can't return directly or break out of a loop 
within the closure, etc.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to