(no title)
acatton | 4 months ago
> Go 1.25 introduced a waitgroup.Go function that lets you add Go routines to a waitgroup more easily. It takes the place of using the go keyword, [...]
99% of the time, you don't want to use sync.WaitGroup, but rather errgroup.Group. This is basically sync.WaitGroup with error handling. It also has optional context/cancellation support. See https://pkg.go.dev/golang.org/x/sync/errgroup
I know it's not part of the standard library, but it's part of the http://golang.org/x/ packages. TBH, golang.org/x/ is stuff that should be in the standard library but isn't, for some reason.
blixt|4 months ago
I discovered it after I had already written my own utility to do exactly the same thing, and the code was almost line for line the same, which was pretty funny. But it was a great opportunity to delete some code from the repo without having to refactor anything!
giancarlostoro|4 months ago
One of the core strengths of Go is that it fits the zen of Python's " There should be one-- and preferably only one --obvious way to do it" and it does this very nicely.
mholt|4 months ago
lagniappe|4 months ago
think of it as testing/staging before being merged into stable stdlib
linhns|4 months ago
CamouflagedKiwi|4 months ago
infogulch|4 months ago
How does it cancel in-progress goroutines when the provided context is cancelled?
wesleyd|4 months ago
h4ck_th3_pl4n3t|4 months ago
With standard waitgroups I always move my states as a struct with something like a nested *data struct and an err property which is then pushed through the channel. But this way, my error handling is after the read instead of right at the Wait() call.
WhyNotHugo|4 months ago