# 12.7 用 defer 关闭文件
`defer` 关键字(参看 [6.4](06.4.md))对于在函数结束时关闭打开的文件非常有用,例如下面的代码片段:
```go
func data(name string) string {
f, _ := os.OpenFile(name, os.O_RDONLY, 0)
defer f.Close() // idiomatic Go code!
contents, _ := ioutil.ReadAll(f)
return string(contents)
}
```
在函数 `return` 后执行了 `f.Close()`
## 链接
- [目录](directory.md)
- 上一节:[用切片读写文件](12.6.md)
- 下一节:[使用接口的实际例子:fmt.Fprintf](12.8.md)