package main func readAllErrors(amount int, errorChannel chan error) []error { errors := make([]error, 0) for i := 0; i < amount; i++ { err := <-errorChannel if err != nil { errors = append(errors, err) } } return errors } func runMany(amount int, function func(index int) error) []error { errorChannel := make(chan error) for i := 0; i < amount; i++ { index := i go func() { errorChannel <- function(index) }() } return readAllErrors(amount, errorChannel) }