Урок 86 · Задача 1

RunParallel: сбор ошибок вручную

WaitGroup не собирает ошибки. Реализуйте runParallel(fs []func() error) []error: каждая горутина пишет ошибку в свою ячейку слайса, порядок сохраняется, nil-ошибки отбрасываются.

00:00:00
Показать решение
GolangРешение
func runParallel(fs []func() error) []error {
	errs := make([]error, len(fs))
	var wg sync.WaitGroup
	for i, f := range fs {
		wg.Add(1)
		go func(i int, f func() error) {
			defer wg.Done()
			errs[i] = f()
		}(i, f)
	}
	wg.Wait()
	var out []error
	for _, e := range errs {
		if e != nil {
			out = append(out, e)
		}
	}
	return out
}
Наш сайт собирает куки. Чтобы тебе было удобнее им пользоваться. Нажимая на кнопку, ты даёшь разрешение собирать куки