昨天听了某企业架构师关于golang的经验分享,听到架构师吐槽golang里的闭包是个大坑,对此有点不同看法。
先贴上一段关于闭包的定义:
闭包是指可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)。
对于没有闭包概念的语言从业者来说,可能会觉得闭包是个坑,但对于了解闭包的程序员来说,这就是闭包的性质而已,没有什么值得大肆吐槽的。在go语言中提供了对闭包的支持,从个人经验来看,闭包在有些场景下还是很有用的。
下面提供一个小例子,说明下闭包在go中的使用。