Go defer

本文将介绍 Go 中的 defer 关键字。

一、什么是 defer?

在 Go 中,defer 关键字用于延迟执行命令。

defer 所在的函数执行完成且返回之前,defer 语句将会按照逆序执行。

1
2
3
4
5
6
7
8
9
func main() {
defer fun1()
defer fun2()

fun3()

// 执行fun2()
// 执行fun1()
}

defer 关键字通常和资源释放命令配合使用,以在函数执行结束后自动释放资源。

二、注意事项

  • defer 语句不支持返回值,其返回值将会被自动丢弃
  • 使用 defer 时,应了解它本身也会带来额外的性能开销,应该权衡使用

参考