defer
关键字的实际用途是什么?
例如,而不是这样写:
func main() {
f := createFile("/tmp/defer.txt")
defer closeFile(f)
writeFile(f)
}
我可以这样写:
func main() {
f := createFile("/tmp/defer.txt")
writeFile(f)
closeFile(f)
}
那么,为什么我应该使用它而不是通常放置函数?
答案 0 :(得分:2)
即使在发生紧急情况或return语句之后,延迟函数也始终会执行。
在现实世界的代码中,打开/关闭类型的调用对之间会发生很多事情,而defer使您可以在源代码中将它们保持在一起,而不必为每个return语句重复执行Close调用。 / p>
去写一些真实的代码。不久之后,defer的作用将显而易见。
答案 1 :(得分:0)
在捕获有可能发生恐慌的代码时非常有用。
通常在使用interface{}
(“任何”类型)或反射时,您会遇到尝试转换为与数据的实际类型不匹配的类型的问题。
defer
在顶部处理该错误的功能是节省时间并保持应用程序运行的方式。