Эйч
Эйч
  • Все менторы
Задачи/Go-разработчик/Программа с параллельной загрузкой URL

Программа с параллельной загрузкой URL

Условие задачи

Улучшить исходный код, чтобы:

  • не использовать time.Sleep для ожидания завершения горутин;
  • корректно обрабатывать ошибки;
  • дожидаться завершения всех запросов.
gopackage main

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

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

    for _, url := range urls {
        go func(url string) {
            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)
    }

    fmt.Println("All requests launched!")
    time.Sleep(400 * time.Millisecond)
    fmt.Println("Program finished.")
}

func fetchUrl(url string) error {
    // Подробная реализация опущена и не относится к теме задачи
    // _, err := http.Get(url)
    return nil
}

Профессия

Go-разработчик

Сопроводим до оффера

Умножим шансы на каждом этапе поиска и поможем получить выгодный оффер

Узнать больше

Сервис развития карьеры

Контактыteam@h.careers@hcareers
TelegramVKYouTubeLinkedIn
Профессии
Компания
С чем помогаемОтзывыВопросы и ответыСертификатыВебинарыСтать ментором

Платформа принадлежит ООО "Эйч Карьера"
ИНН 9710095807 ОГРН 1227700077340
Адрес: 127006, город Москва, Старопименовский пер, д. 18 стр. 2, помещ./ком./этаж I/19/2

Copyright © 2020-2025 Сервис развития карьеры Эйч. Все права защищены.

Политика конфиденциальностиПользовательское соглашениеОферта