Adakah Kita Perlu Menutup Objek Respons Jika Ralat Berlaku Semasa Memanggil http.Get(url)?
Apabila menggunakan http.Get (url), anda mungkin menghadapi senario di mana ralat berlaku semasa permintaan. Dalam kes sedemikian, persoalan timbul: adakah penting untuk menutup objek tindak balas?
Jawapan:
Mengikut prinsip pengaturcaraan umum, jika fungsi mengembalikan berbilang nilai , termasuk ralat, anda harus memeriksa nilai ralat terlebih dahulu. Jika terdapat ralat (err != nil), anda harus mengambil tindakan yang sewajarnya dan hanya meneruskan jika nilai err adalah nil.
Dalam kes http.Get(), ia mematuhi konsep ini. Jika ralat berlaku, ia mengembalikan respons sifar, seperti:
return nil, someError
Oleh itu, anda harus mengendalikannya seperti berikut:
res, err := http.Get(url) if err != nil { log.Printf("Error: %s\n", err) return } defer res.Body.Close() // Read/work with body
Perlu diperhatikan bahawa walaupun ralat berlaku dan respons bukan nol dikembalikan kerana kegagalan ubah hala, anda masih tidak perlu menutup badan respons. Walau bagaimanapun, jika anda berkeras untuk berbuat demikian, anda boleh menggunakan semakan bersyarat seperti:
if res != nil { defer res.Body.Close() }
Dokumentasi http.Response memastikan bahawa sifat Body tidak akan menjadi sifar, tanpa mengira kehadiran atau ketiadaan data respons .
Atas ialah kandungan terperinci Patutkah Saya Menutup Objek Respons HTTP Selepas Ralat `http.Get()`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!