Yes, that's correct. It does look a bit odd doesn't it. As you say it's because the w.Count() gets evaluated by the select each time around the loop and so the count gets reset to 0.
Probably the best way to fix that is to make Count() non-destructive and have an explicit Clear function that gets called when a count has been delivered.
Like this: http://play.golang.org/p/LWVvdhwBiQ
Since this blog post is likely to be around for a while I will update the code.