• Golang闭包入门了解


    概念
    闭包就是一个函数与其相关的引用环境组成的一个整体。
    闭包本质其实是一个函数,但是这个函数会用到函数外的变量,它们共同组成的整体我们叫做闭包。

    简单举例说明

    package main
    import (
        "fmt"
    )
    
    //测试小程序 累加器
    
    func AddUpper () func (int) int {
        var n int = 10
        return func (x int) int {
            n = n + x
            return n
        }
    }
    func main(){
    
        test := AddUpper() //test变量接收Addupper返回的函数
    
        //因为Addupper返回的结果是一个函数,test(1)传参是1,
        //那么其实就是把1传参给Addupper里的int 参数x,x在使用的时候会和外面的n相加
        //那么x+n :1+10 =11
        fmt.Println(test(1))  //11
    
    
        //下面的结果会做说明
        fmt.Println(test(2))   //13
    
        fmt.Println(test(3))    //16
    }
    D:goprojectsrcmain>go run hello.go
    11
    13
    16

    当反复调用test函数时,因为n是只初始化一次,因此每次调用一次就进行累计,而不会初始化。变量n永远隐式存在于test中

    进一步说明

    //其实下面这块代码就是一个简单的闭包
    var n int = 10
    return func (x int) int {
        n = n + x
        return n
    }
    //返回的是一个匿名函数,但是这个匿名函数引用到了函数外的变量n,但是这个匿名函数会和这个n形成一个引用关系的整体,构成闭包

      

  • 相关阅读:
    svn命令
    samba配置
    查看登录用户who
    facl笔记
    计算100以内所有奇数的和以及所有偶数的和;分别显示之
    计算100以内所有能被3整除的正整数的和
    特殊权限:SUID,SGID,Sticky
    vi命令笔记
    nginx、fastCGI、php-fpm关系梳理(转载参考)
    Nginx + CGI/FastCGI + C/Cpp
  • 原文地址:https://www.cnblogs.com/wt645631686/p/9492676.html
Copyright © 2020-2023  润新知