go5.2
5.2 defer
尽管go语言提供了垃圾回收器,但是有些资源需要我们明确的去释放。例如,当我们处理完一个文件事,需要使用Close()
关闭文件。这类代码总是危险的。首先,当我们写一个函数时,很容易忘记关闭在第十行声明的某些东西。另外,一个函数可能会有多个返回点。go的解决方法会是提供了defer
关键字:
1 | package main |
如果你试着运行上面的代码,你可能会得到一个错误(因为文件不存在)。关键在于展示defer
是如何工作。无论如何你的defer
都会在方法返回时得到执行,虽然这有点极端。但是这可以帮你在初始化的附近释放资源,并且可以实现多个返回点。