Назад к задачам
Junior — Senior
9

Параллельная загрузка списка URL с ранним завершением при ошибке

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Дан массив строк, каждая из которых представляет собой URL. Требуется написать функцию download(urls []string) error, которая будет одновременно скачивать содержимое всех указанных адресов. Если хотя бы один запрос завершится с ошибкой, функция должна немедленно вернуть эту ошибку; если все запросы прошли успешно — вернуть nil. Необходимо обеспечить корректную работу в многопоточной среде и реализовать механизм прекращения всех остальных запросов при возникновении первой ошибки.

func main() {
 _, err := download([]string{
  "https://example.com/e25e26d3-6aa3-4d79-9ab4-fc9b71103a8c.xml",
  "https://example.com/a601590e-31c1-424a-8ccc-dec5fb35c0f6.xml",
  "https://example.com/1cf0dd69-a3e5-4682-84e3-dfe22ca771f4.xml",
  "https://example.com/ceb566f2-a234-4cb8-9466-4a26f1363aa8.xml",
  "https://example.com/b6ed16d7-cb3d-4cba-b81a-01a789d3a914.xml",
 })
 if err != nil {
  panic(err)
 }
}

func download(urls []string) error {
 return nil
}