HTTP/1.1 keep-alive - одно TCP-соединение для нескольких запросов. В Go http.Client по умолчанию переиспользует соединения (Transport с пулом). Настройка: MaxIdleConns, MaxIdleConnsPerHost, IdleConnTimeout. Не закрывать тело ответа до полного прочтения - иначе соединение не вернется в пул. Для большого числа запросов увеличить MaxIdleConnsPerHost.
client := &http.Client{
Transport: &http.Transport{
MaxIdleConnsPerHost: 100,
IdleConnTimeout: 90 * time.Second,
},
Timeout: 30 * time.Second,
}