Back to tasksGet help with live coding in real time with Sobes Copilot
Junior — Senior
29
Остановить программу при возникновении ошибки любого URL
Companies where asked:
Lamoda Tech
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
}