Golang面试题
Golang中的 defer
是什么?怎么使用?有什么注意的地方吗?
Golang中的defer用于延迟执行一些函数,defer有和栈一样的特性,即后入栈的先出栈,在函数的执行过程中,更晚调用的defer,在函数退出时,会先执行。
由于defer也是调用一个函数,而且在外层函数退出之后,又新建一个帧来执行,因此如果滥用defer,会导致性能损耗比较大。但是日常开发中,很多操作例如加锁、解锁,如果忘记操作,带来的损失会比defer带来的性能损失大得多,因此,defer不能滥用,但是可以按需使用。