Sobes.tech
Back to questions
Senior
1

**Условие** Запросы к нескольким URL-адресам должны выполняться параллельно. Нужно вывести HTTP-статусы, обработать ошибки. ```go package main func main() { urls := []string{"[link] "[link] // Do something } ```

Companies where asked
Бюро 1440Бюро 1440

Answer from AI

sobes.tech AI

Ниже пример на Go, который выполняет параллельные HTTP-запросы к нескольким URL, выводит HTTP-статусы и обрабатывает ошибки:

package main

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

func main() {
    urls := []string{
        "https://golang.org",
        "https://invalid.url",
        "https://github.com",
    }

    var wg sync.WaitGroup
    wg.Add(len(urls))

    for _, url := range urls {
        go func(u string) {
            defer wg.Done()
            resp, err := http.Get(u)
            if err != nil {
                fmt.Printf("Ошибка запроса к %s: %v\n", u, err)
                return
            }
            defer resp.Body.Close()
            fmt.Printf("URL: %s, Status: %s\n", u, resp.Status)
        }(url)
    }

    wg.Wait()
}

В этом примере:

  • Используется sync.WaitGroup для ожидания завершения всех горутин.
  • Каждому URL соответствует отдельная горутина, которая делает HTTP GET.
  • Ошибки выводятся в консоль.
  • Для успешных запросов выводится HTTP-статус.