Ответ
Сетевые таймауты в Go помогают избежать зависаний при работе с внешними ресурсами. Основные типы:
- Таймаут подключения (Dial timeout) - ограничивает время установки соединения.
- Таймаут чтения/записи - контролирует время ожидания данных.
Пример с http.Client:
client := &http.Client{
Timeout: 5 * time.Second, // Общий таймаут
Transport: &http.Transport{
DialContext: (&net.Dialer{
Timeout: 2 * time.Second, // Таймаут подключения
}).DialContext,
ResponseHeaderTimeout: 1 * time.Second, // Таймаут заголовков
},
}
Без таймаутов приложение может "зависнуть" при проблемах сети. Рекомендуется всегда устанавливать разумные значения.