Golang中的defer关键字实现比较特殊的功能,按照官方的解释,defer后面的表达式会被放入一个列表中,在当前方法返回的时候,列表中的表达式就会被执行。一个方法中可以在一个或者多个地方使用defer表达式,这也是前面提到的,为什么需要用一个列表来保存这些表达式。在Golang中,defer表达式通常用来处理一些清理和释放资源的操作。
貌似看起来比较难懂,其实,如果你用过C#,一定记得那个用起来非常方便的using语句,defer可以理解成为了实现类似的功能。不过比起C#的using语句,defer的行为稍微复杂一些,想要彻底理解defer,需要了解Golang中defer相关的一些特性。