美文网首页互联网就业技术指南Go知识库
GO语言面试系列:(三)关于golang闭包所谓的“坑”

GO语言面试系列:(三)关于golang闭包所谓的“坑”

作者: Chole121 | 来源:发表于2018-10-30 11:00 被阅读53次

关于golang闭包所谓的“坑”,昨天听了某企业架构师关于golang的经验分享,听到架构师吐槽golang里的闭包是个大坑,对此有点不同看法。

先贴上一段关于闭包的定义:

闭包是指可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)。

对于没有闭包概念的语言从业者来说,可能会觉得闭包是个坑,但对于了解闭包的程序员来说,这就是闭包的性质而已,没有什么值得大肆吐槽的。在go语言中提供了对闭包的支持,从个人经验来看,闭包在有些场景下还是很有用的。

下面提供一个小例子,说明下闭包在go中的使用。

第一个例子:由于闭包对变量的使用特性,导致不管执行多少次循环,闭包获取的总数最后一次循环后变量i的值3。


第二个例子:如果想获取期望的变量值,只要将变量i作为匿名函数的参数传入,即可。

当然,为了看得更清楚,可以修改下传参的名称(如下图)。

来源:https://www.2cto.com/net/201703/613037.html

添加客服微信:grey0805,分享更多精彩内容!

相关文章

  • GO语言面试系列:(三)关于golang闭包所谓的“坑”

    关于golang闭包所谓的“坑”,昨天听了某企业架构师关于golang的经验分享,听到架构师吐槽golang里的闭...

  • golang

    golang中闭包的问题 熟悉go语言的开发者都知道,go的闭包是可以记录状态的。当我想用闭包来实现保存某一str...

  • Go 学习

    go语言局部变量分配在栈还是堆Golang 垃圾回收剖析go语言坑之for range

  • golang unsafe 包

    阅读原文 golang unsafe 包 ArbitraryType 和 Pointer Go 语言是强类型语言,...

  • Mac上运行go项目

    1、下载Go语言安装包:https://golang.google.cn/dl/[https://golang.g...

  • Golang 中关于闭包的坑

    所谓闭包是指内层函数引用了外层函数中的变量或称为引用了自由变量的函数,其返回值也是一个函数,了解过的语言中有闭包概...

  • Go语言探索 - 7(原创)

    Go语言基础系列博客用到的所有示例代码 在 上一篇文章主要学习了Go语言的函数定义、值传递和引用传递以及闭包函数。...

  • Go语言的主要特征

    Go语言的主要特征: Golang文件名: Go语言命名: 1.Go的函数、变量、常量、自定义类型、包(packa...

  • go闭包和工厂模式

    先说工厂模式,工厂模式有3种:简单工厂模式;工厂方法模式;抽象工厂模式。 go语言中的闭包已经在上一节golang...

  • 入坑Go语言(二)—— 包机制的理解

    原文发布在我的个人博客 入坑Go语言(二) | 以太空间 一、概述   想学习Golang,包肯定是绕不过去的,就...

网友评论

    本文标题:GO语言面试系列:(三)关于golang闭包所谓的“坑”

    本文链接:https://www.haomeiwen.com/subject/kbowtqtx.html