3.8 defer 與資源清理
3.8 defer 與資源清理
defer 的核心用途是把資源清理放在取得資源的附近。檔案、鎖、response body、temporary resource 與測試 cleanup 都適合用 defer 表達「離開這個 scope 前要完成的事」。
預計補充內容
這些資源清理邊界會在下列章節展開:
- Go 進階:select loop 的生命週期設計:長生命週期的 goroutine 會怎麼收尾,和
defer的 scope 觀念直接相關。 - Go 進階:graceful shutdown 與 signal handling:當 process 要停下來時,
defer常常是 cleanup 的最後一道保險。 - Go 入門:testing 基礎:測試裡的資源回收與
t.Cleanup,會比單純 close 更能說清楚責任。
與 Go 進階的關係
本章建立基本資源清理語感。長時間 worker、WebSocket pump 與 graceful shutdown 會在 Go 進階:select loop 的生命週期設計 與 graceful shutdown 與 signal handling 中延伸。
和 Go 教材的關係
這一章承接的是資源生命週期、goroutine 停止與 shutdown;如果你要先回看語言教材,可以讀: