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:\goproject\src\main>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形成一个引用关系的整体,构成闭包

 

  

转载于:https://www.cnblogs.com/wt645631686/p/9492676.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值