It's kinda unfortunate that sync.WaitGroup.Done() is a method that does an action:
But x/net.Context.Done is a read-only accessor only:
https://godoc.org/golang.org/x/net/context#Context - "Done returns a channel that's closed when work done on behalf of this context should be canceled. Done may return nil if this context can never be canceled. Successive calls to Done return the same value."
I bring this up because I find myself writing a little sync.WaitGroup.Wait -> channel adapter, so I can select on a WaitGroup, along with some other things.
It would be nice if sync.WaitGroup had a method to return a close-only notification channel (<-chan struct{}) when Wait is complete.
But there's no great name for it. (Done would be the obvious choice, to mirror x/net.Context, but WaitGroup.Done has just about the opposite meaning...)
(musing aloud)