跳转到主要内容

【Go语言开发】理解 Go 中的延迟(defer )

介绍


Go 有许多其他编程语言中常见的控制流关键字,例如 if、switch、for 等。大多数其他编程语言中没有的一个关键字是 defer,虽然它不太常见,但您很快就会看到它在您的程序中有多大用处。

defer 语句的主要用途之一是清理资源,例如打开的文件、网络连接和数据库句柄。当您的程序使用完这些资源后,关闭它们以避免耗尽程序的限制并允许其他程序访问这些资源非常重要。 defer 通过将关闭文件/资源​​的调用保持在打开调用附近,使我们的代码更清晰,更不容易出错。

在本文中,我们将学习如何正确使用 defer 语句来清理资源以及使用 defer 时常犯的几个错误。

什么是延迟(defer )声明


defer 语句将 defer 关键字后面的函数调用添加到堆栈中。当添加它们的函数返回时,调用该堆栈上的所有调用。因为调用被放置在堆栈上,所以它们以后进先出的顺序被调用。

让我们通过打印一些文本来看看 defer 是如何工作的:

main.go