Назад к вопросам
Wildberries
Junior — Middle
77
Каким образом можно одновременно выполнить пять запросов к серверу?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Go для одновременного выполнения нескольких запросов к серверу удобно использовать горутины и канал для синхронизации результатов. Например, можно запустить 5 горутин, каждая из которых выполняет запрос, и собрать результаты через канал:
package main
import (
"fmt"
"net/http"
"sync"
)
func fetch(url string, wg *sync.WaitGroup, ch chan<- string) {
defer wg.Done()
resp, err := http.Get(url)
if err != nil {
ch <- fmt.Sprintf("Error fetching %s: %v", url, err)
return
}
ch <- fmt.Sprintf("%s: %s", url, resp.Status)
resp.Body.Close()
}
func main() {
urls := []string{
"http://example.com/1",
"http://example.com/2",
"http://example.com/3",
"http://example.com/4",
"http://example.com/5",
}
var wg sync.WaitGroup
ch := make(chan string, len(urls))
for _, url := range urls {
wg.Add(1)
go fetch(url, &wg, ch)
}
wg.Wait()
close(ch)
for msg := range ch {
fmt.Println(msg)
}
}
Такой подход позволяет эффективно выполнять несколько запросов параллельно.