Avatar ·

Как сделать HTTP запрос в Go?

Всем привет! Подскажите, пожалуйста, как правильно выполнить HTTP GET запрос в Go и получить ответ от сервера. Я новичок в языке и столкнулся с проблемой при попытке получить данные с внешнего API.

Сейчас я использую стандартную библиотеку net/http, но мой код, похоже, зависает и не возвращает результат. Вот что я пробовал:

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {
    resp, err := http.Get("https://api.example.com/data")
    if err != nil {
        fmt.Println("Ошибка:", err)
        return
    }
    defer resp.Body.Close()

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println("Ошибка чтения:", err)
        return
    }

    fmt.Println(string(body))
}

Проблема в том, что программа просто висит без вывода, и я не вижу ни ошибок, ни данных. Я уже проверил, что URL рабочий (через curl всё отлично). Подозреваю, что дело может быть в отсутствии таймаута или в том, как я обрабатываю ответ. Возможно, нужно использовать http.Client с контекстом?

Ожидаю получить JSON-ответ от сервера и вывести его в консоль. Буду благодарен за пример рабочего кода с обработкой ошибок и таймаутами. Заранее спасибо!