Закрытие потока ответов - PullRequest
       0

Закрытие потока ответов

0 голосов
/ 17 января 2020

Должны ли мы сделать это:

response, err := http.Get(url)
if err != nil {
   log.Fatal(err)
}
defer response.Body.Close()

или это:

response, err := http.Get(url)
defer response.Body.Close()
if err != nil {
    log.Fatal(err)
}

Я думаю, ответ может быть нулевым. Но мне интересно, если ответ может быть создан, но все равно получить ошибку? Я думаю, я бы сделал что-то вроде этого?

response, err := http.Get(url)
if response != nil {
   defer response.Body.Close()
}
if err != nil {
    log.Fatal(err)
}

1 Ответ

2 голосов
/ 17 января 2020

Ваш первый кодовый блок правильный

Из документации

Клиент должен закрыть тело ответа после его завершения:

resp, err := http.Get("http://example.com/")
if err != nil {
    // handle error
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)

Если есть ошибка, ответ равен нулю

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...