diff --git a/ch5/ch5-08.md b/ch5/ch5-08.md index 56252a2..59eb470 100644 --- a/ch5/ch5-08.md +++ b/ch5/ch5-08.md @@ -222,6 +222,6 @@ func fetch(url string) (filename string, n int64, err error) { } ``` -對resp.Body.Close延遲調用我們已經見過了,在此不做解釋。上例中,通過os.Create打開文件進行寫入,在關閉文件時,我們沒有對f.close采用defer機製,因爲這會産生一些微妙的錯誤。許多文件繫統,尤其是NFS,寫入文件時發生的錯誤會被延遲到文件關閉時反饋。如果沒有檢査文件關閉時的反饋信息,可能會導致數據丟失,而我們還誤以爲寫入操作成功。如果io.Copy和f.close都失敗了,我們傾向於將io.Copy的錯誤信息反饋給調用者,因爲它先於f,close發生,更有可能接近問題的本質。 +對resp.Body.Close延遲調用我們已經見過了,在此不做解釋。上例中,通過os.Create打開文件進行寫入,在關閉文件時,我們沒有對f.close采用defer機製,因爲這會産生一些微妙的錯誤。許多文件繫統,尤其是NFS,寫入文件時發生的錯誤會被延遲到文件關閉時反饋。如果沒有檢査文件關閉時的反饋信息,可能會導致數據丟失,而我們還誤以爲寫入操作成功。如果io.Copy和f.close都失敗了,我們傾向於將io.Copy的錯誤信息反饋給調用者,因爲它先於f.close發生,更有可能接近問題的本質。 **練習5.18:**不脩改fetch的行爲,重寫fetch函數,要求使用defer機製關閉文件。 \ No newline at end of file