From 6dcc864d9eac4aab4dca79e18c3ee650dc45681a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=89=E5=AD=90?= Date: Tue, 29 Sep 2015 23:18:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=9012.7=E7=AB=A0=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eBook/12.7.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 eBook/12.7.md diff --git a/eBook/12.7.md b/eBook/12.7.md new file mode 100644 index 0000000..79323e2 --- /dev/null +++ b/eBook/12.7.md @@ -0,0 +1,21 @@ +# 用defer关闭文件 + +`defer`关键字(参看6.4)对于在函数结束时关闭打开的文件非常有用,例如下面的代码片段: + +```go +func data(name string) string { + f := os.Open(name, os.O_RDONLY, 0) + defer f.Close() // idiomatic Go code! + contents := io.ReadAll(f) + return contents +} + +``` +在函数return时执行了`f.Close()` + + +## 链接 + +- [目录](directory.md) +- 上一节:[用切片读写文件](12.6.md) +- 下一节:[一个使用接口的实际例子:fmt.Fprintf](12.8.md)