Dear Jakob and all,
indeed I was blind. This works like a charm:
amount := 42
remaining := amount
ticker := time.NewTicker(5 * time.Second)
defer ticker.Stop()
for remaining > 0 {
select {
case <-ticker.C:
fmt.Printf("Progress: %d left from %d\n", remaining, amount)
case <-donChan:
remaining--
case res := <-resChan:
fmt.Println(res)
}
}
thanks all!
Chris
On Saturday, May 19, 2018 at 9:16:19 PM UTC+2, Jakob Borg wrote:
>
> On 19 May 2018, at 16:25, Chris Burkert <[email protected] <javascript:>>
> wrote:
> >
> > case <-time.After(5 * time.Second):
> > fmt.Printf("Progress: %d left from %d\n", remaining, amount)
>
> It's not super clear from your post if you're aware of this already, but
> this case will only fire after the select has been blocked for five
> seconds. If there is any activity on the other cases one of those will
> proceed, you'll get another loop iteration, and another five second timeout
> before status output.
>
> Typically you'd use a five second ticker instead to get a channel event
> every five seconds and use that to print status output.
>
> //jb
--
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 [email protected].
For more options, visit https://groups.google.com/d/optout.