Sobes.tech
Junior — Senior

Остановить программу при возникновении ошибки любого URL

livecode

Užduoties sąlyga

Необходимо доработать существующее приложение так, чтобы при получении ошибки от хотя бы одного из запрошенных адресов все запущенные горутины прекращали свою работу, а программа завершалась.

package main

import (
 "fmt"
 "net/http"
 "sync"
 "time"
)

func main() {
 urls := []string{
  "https://www.lamoda.ru",
  "https://www.yandex.ru",
  "https://www.mail.ru",
  "https://www.google.com",
 }

 wg := &sync.WaitGroup{}

 for _, url := range urls {
  wg.Add(1)
  go func(url string) {
   defer wg.Done()

   fmt.Printf("Fetching %s...\n", url)

   err := fetchUrl(url)
   if err != nil {
    fmt.Printf("Error fetching %s: %v\n", url, err)
    return
   }

   fmt.Printf("Fetched %s\n", url)
  }(url)
 }

 wg.Wait()
 fmt.Println("Program finished.")
}

func fetchUrl(url string) error {
 // _, err := http.Get(url)
 return nil
}