Sobes.tech
Back to tasks
Junior — Senior
29

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

Companies where asked:

Lamoda Tech
Get help with live coding in real time with Sobes Copilot
Task condition

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

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
}