go语言闭包

闭包其实也就是匿名函数的一种。是函数的嵌套使用,内层的函数可以使用外层函数的所有变量,即使外层函数已经执行完毕。内层函数可以对外部捕获的变量进行访问和修改,类似于c++中static静态局部变量的作用。

package main

import (
    "fmt"
)

func addf(value int) func(value2 int) int {
    // 返回一个闭包
	t:=10 //这个局部变量会跟随闭包生命期一直存在,类似于c++中的static局部静态变量的作用。
    return func(value2 int) int {
        // 累加内部局部变量,传来的形参变量
        t+=value+value2
        // 返回一个累加值
        return t
    }
}
func main() {
    // 创建一个函数变量
    myadd := addf(1)

    // 累加1并打印
    fmt.Println(myadd(2)) //返回13,闭包内局部变量t的值为13
    fmt.Println(myadd(3)) //再次调用,就是13+1+3=17	


    // 打印函数变量地址
    fmt.Printf("%p-%T\n", myadd,myadd)
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值