Back to questions
Бюро 1440
Senior
1
**Условие** Запросы к нескольким URL-адресам должны выполняться параллельно. Нужно вывести HTTP-статусы, обработать ошибки. ```go package main func main() { urls := []string{"[link] "[link] // Do something } ```
Companies where asked
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-статус.