Hi! 

Often with tools that poll something, you get code of this form:

```
    for {
        r, err := doSomeCall()
        if err != nil {
            log.Printf("Some error:", err)
            continue
        }
        s, err := doSomeOtherCall(r)
        if err != nil {
            log.Printf("Some other error:", err)
            continue
        }
    }
```

This works nice and dandy, except that it of course runs as fast/hard as
it can, so usually, one would have a `time.Sleep()` or something like it
at the end of the `for{}`. Except: now the error handling blocks can't
use `continue` anymore. I can of course make this a nested set of
`if {} else {}` blocks, but beyond two calls, that is very ugly and hard
to understand.

So what is the *idiomatic* way of being able to use `continue` (or
something like it), yet have "always do this" code at the end of the
loop? As I understand it, `defer` only works for ends of functions, not
ends of blocks, and label breaks only work for breaks, obviously.

Best,
Tobias

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/Yd6nL/ScO9gO0TgB%40skade.schwarzvogel.de.

Reply via email to