首页 > 其他分享 >Go-闭包

Go-闭包

时间:2023-06-24 12:11:32浏览次数:25  
标签:闭包 调用 函数 int AddUpper func Go

1、介绍:

  闭包就是一个函数和与其相关的引用环境组合的一个整体(实体)

2、演示:

//累加器
func AddUpper() func(int)int{
    var n int=10
    return func(x int )int{
        n=n+x
        return n
    }
}
func main(){    
    f:=AddUpper()      //f的数据类型为func(int)int
    fmt.Printf(f(1))    //11 
    fmt.Printf(f(2))    //13
    fmt.Printf(f(3))    //16
} 

3、解释:

  1)AddUpper是一个函数,返回值类型时func(int)int

  2)构成闭包的代码如下:

    var n int=10
    return func(x int )int{
        n=n+x
        return n
    }

  返回值是一个匿名函数,但这个匿名函数引用了函数外的n,因此这个匿名函数和n形成了一个整体,构成闭包

  3)可以这样理解:闭包是类,函数是操作,n是字段。  函数和它使用到的n构成闭包

  4)当反复调用f函数时,因为n是初始化一次,因此每调用一次就进行累计

    n变量在AddUpper调用时初始化一次,只调用了一次(即执行f :=AddUpper()时调用了一次),后续再次调用f函数,所使用到的n均来自上次调用的返回值

  5)闭包的关键:分析出返回的函数引用了哪些变量。

标签:闭包,调用,函数,int,AddUpper,func,Go
From: https://www.cnblogs.com/bug-boy/p/17498376.html

相关文章

  • TensorFlow10.3 卷积神经网络-经典卷积网络(VGG,GoogLeNet)
    LeNet-5这个是5层的,3个c+s,然后有两个全连接层。AlexNet这里有8(5+3)层。就是之前的技术没有现在的好,所以它用了两块GTX580,然后让你它的模型分成两块,然后在两块显卡中跑。很好的把显存给分开来了。VGG之前都是用\(11*11\)的窗口,然后它用了\(3*3\)的窗口,这个\(3*3\)的窗......
  • golang 常用控制协程的三种方式
    waitGroupwaitGroup这种方式适用于一个任务可以被拆分成几个子任务,并且子任务之间的关联程度不高,全部的子任务都完成,才会进行下一阶段的任务。packagemainimport( "fmt" "sync" "time")funcmain(){ varwgsync.WaitGroup wg.Add(3) gofunc(){ deferwg.Do......
  • go使用 github.com/influxdata/influxdb/client/v2 写数据到 influxdb
    转载请注明出处:接入示例使用github.com/influxdata/influxdb/client/v2依赖包向InfluxDB写入数据的示例代码:packagemainimport("fmt""log""time""github.com/influxdata/influxdb/client/v2")const(MyDB=&......
  • 跳转到指定标签处运行:GoTo
    语法VBA中,在程序运行时,使用GoTo结构,跳转到指定标签处运行,从而不执行GoTo语句和指定标签之间的代码。在实际的VBA开发中,Goto结构多用于处理错误的情形,即发生错误时,跳转到处理错误的代码处。GoTo结构由GoTo语句和标签语句组成。基本语法如下:GoTo[标签]'被跳过的代......
  • django之视图层
    三板斧HttpResponse返回字符串类型render返回html页面并且在返回给浏览器之前还可以给html文件传值redirect重定向"""#视图函数必须要返回一个HttpResponse对象正确研究三者的源码即可得处结论Theviewapp01.views.indexdidn'treturnanHttpRes......
  • django入门
    django使用前注意事项: """1.计算机名称不能有中文2.一个pycharm窗口不要打开多个项目(跟不要出现文件夹套文件夹多级目录的出现)day01day02...3.文件名也不要出现中文如果django安装成功了但是启动就报错那么点击报错......
  • 【Django】图形验证码显示及验证
    图形验证码显示及验证开发项目时,在登陆或者注册功能中为防止脚本恶意破坏系统,故而添加图形验证码。1安装配置安装第三方库pipinstalldjango-simple-captcha配置settings.pyINSTALLED_APPS=[ ......'captcha',]将已存在的数据库迁移文件集同步到数据库中......
  • django前戏
    Web框架本质web框架本质上可以看成是一个功能强大的socket服务端,用户的浏览器可以看成是拥有可视化界面的socket客户端。两者通过网络请求实现数据交互,学者们也可以从架构层面上先简单的将Web框架看做是对前端、数据库的全方位整合纯手撸web框架服务端importsocketserve......
  • Mongodb安装
    1、上传mongodb-linux-x86_64-rhel70-4.4.2.tgz 安装包至/usr/local/目录下2、解压安装包[root@quality2local]#tar-zxvf mongodb-linux-x86_64-4.0.7.tgz 修改包名:mvmongodb-linux-x86_64-rhel70-4.4.2    mongodbMongoDB提供了linux各个发行版本64位的安装包......
  • 垃圾识别系统Python+TensorFlow+Django+卷积神经网络算法【完整代码系统】
    一、介绍垃圾识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对5种垃圾数据集进行训练,最后得到一个识别精度较高的模型。并基于Django,开发网页端操作平台,实现用户上传一张垃圾图片识别其名称。二、效果展示三、演示视频+代码视......