Sobes.tech
Назад к вопросам
Junior — Middle
77

Каким образом можно одновременно выполнить пять запросов к серверу?

Компании, где спрашивали
WildberriesWildberries

Ответ от нейросети

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)
    }
}

Такой подход позволяет эффективно выполнять несколько запросов параллельно.