Go基础面试题, Go 语言中如何使用 defer 语句?
Go基础面试题, Go 语言中如何使用 defer 语句?
QA
Step 1
Q:: Go 语言中如何使用 defer 语句?
A:: 在 Go 语言中,defer
语句用于在函数返回之前执行一段代码。通常用于资源释放(如关闭文件、解锁互斥量等)。defer
语句后面的函数调用会被延迟到包含它的函数即将返回时执行,且执行顺序为 LIFO(后进先出)。使用 defer
可以确保在函数执行过程中出现错误或提前返回时,仍然能够正确释放资源。
示例:
func example() {
file, err := os.Open("file.txt")
if err != nil {
log.Fatal(err)
}
defer file.Close() // 在函数返回前关闭文件
// 进行文件操作
}
用途
面试 `defer` 语句的主要原因是为了评估候选人对资源管理的理解,尤其是在异常处理和函数提前返回的情况下,是否能够确保资源得到正确释放。在实际生产环境中,这个知识点对于编写健壮、易于维护的代码至关重要。例如,处理文件、网络连接、数据库连接等资源时,使用 `defer` 可以确保资源在不使用时被及时释放,避免资源泄漏问题。\n相关问题
🦆
Go 语言中 defer 的执行顺序是怎样的?▷
🦆
在 Go 语言中,defer 如何处理带有参数的函数调用?▷
🦆
在什么情况下 defer 可能会导致性能问题?▷