errgroup.Group — основной способ. g.Go(func() error { ... }) запускает горутины, g.Wait() ждёт все и возвращает первую ошибку. Если нужны ВСЕ ошибки — собирай в слайс с мьютексом: var mu sync.Mutex; var errs []error; в каждой горутине mu.Lock(); errs = append(errs, err); mu.Unlock(). Потом errors.Join(errs...). Или через канал ошибок: ch := make(chan error, n), горутины шлют туда, потом собираешь. Для production errgroup + multierr/errors.Join — стандартный подход.
Как агрегировать ошибки из горутин?
Middle
279 просмотровAFK Offer AI
Как проектировать fault-tolerant систему?