// Написать код, который будет выводить коды ответов на HTTP-запросы по двум URL адресам (например главная страница Google и главная страница dzen.ru)

Запустите по горутине на URL, задайте HTTP-таймаут, закройте тела ответов и дождитесь обеих операций. Ошибки обрабатываются отдельно от кодов HTTP.

Короткий ответ

Что ответить на собеседовании

Запустите по горутине на URL, задайте HTTP-таймаут, закройте тела ответов и дождитесь обеих операций. Ошибки обрабатываются отдельно от кодов HTTP.

Подробный разбор

Ответ с пояснениями

Условие

// Написать код, который будет выводить коды ответов на HTTP-запросы по двум URL адресам (например главная страница Google и главная страница dzen.ru) // Запросы должны осуществляться параллельно.

Ответ

Запустите по горутине на URL, задайте HTTP-таймаут, закройте тела ответов и дождитесь обеих операций. Ошибки обрабатываются отдельно от кодов HTTP.

Пример на Go печатает код конечного ответа после стандартных перенаправлений. Порядок двух строк не определён.

package main

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

func main() {
    client := &http.Client{Timeout: 5 * time.Second}
    var wg sync.WaitGroup
    for _, address := range []string{"https://www.google.com", "https://dzen.ru"} {
        wg.Add(1)
        go func(url string) {
            defer wg.Done()
            resp, err := client.Get(url)
            if err != nil {
                fmt.Printf("%s: %v\n", url, err)
                return
            }
            defer resp.Body.Close()
            fmt.Printf("%s: %d\n", url, resp.StatusCode)
        }(address)
    }
    wg.Wait()
}

Наличие HTTP 4xx/5xx само по себе не означает ошибку client.Get: проверяйте StatusCode. Для большого списка вместо горутины на каждый адрес нужен ограниченный пул.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее