当前位置: 首页 > article >正文

go语言的闭包

闭包其实是匿名函数,不过与一般匿名函数不同,它要引用外部变量。

package main
import "fmt"

func getSum() func(int)(int){
	var sum int = 0
	return func(x int) int{
		sum += x
		return sum
	}
}
func main(){
	f := getSum()
	fmt.Println(f(1))
	fmt.Println(f(2))


}

引用的外部变量是sum,每执行一次,sum的初始值并不是0,它会不断变化。所以要实现闭包,必须在匿名函数内不断修改sum的值。

不用闭包的版本

package main
import "fmt"


func getSum(preSum int,x int) int {
	sum := 0
	sum = preSum + x
	return sum 
}
func main(){
	fmt.Println(getSum(0,1))
	fmt.Println(getSum(getSum(0,1),2))


}

可以看到函数需要两个参数,而闭包只需要一个。显然不用闭包就比较麻烦了。


http://www.kler.cn/a/289411.html

相关文章:

  • C获取程序名称的方法
  • sql server 查看io资源使用
  • vue2+ element ui 集成pdfjs-dist
  • 大语言模型:解锁自然语言处理的无限可能
  • 文献解读-DNAscope: High accuracy small variant calling using machine learning
  • VMware虚拟机安装Win7专业版保姆级教程(附镜像包)
  • gitea + drone实现CI/CD
  • 浅谈新能源汽车充电桩安装以及防范
  • Java中的类加载过程
  • 关于武汉高芯coin417G2红外机芯的二次开发
  • AFFiNE简介
  • 代码随想录八股训练营第三十二天| C++
  • SQL 编程基础
  • 一阶微分方程的解的存在唯一性定理
  • day06 1.继承和多态
  • 【JavaEE初阶】计算机是如何运行的?
  • 缓存分布式一致性问题
  • OpenCV下的视频和帧图片转换(Video2FrameFrame2Video, VideoCaptureVideoWriter)
  • 游戏翻译中西班牙语的特点
  • Kafka【四】Controller的选举机制
  • Storm计算框架
  • 结构体的使用
  • C#串口助手初级入门
  • Oracle 19C管理控制文件
  • 达梦SQL 优化简介
  • 巨魔商店2.1正式更新,最高支持iOS17.6.1