go语言的闭包

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

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的值。

不用闭包的版本

go 复制代码
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))


}

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

相关推荐
froginwe116 分钟前
HTML 标题
开发语言
悠哉悠哉愿意9 分钟前
【嵌入式学习笔记】任务调度器
开发语言·笔记·单片机·嵌入式硬件·学习
笨蛋少年派12 分钟前
Shell脚本编程(bash)简述
开发语言·bash
BD_Marathon15 分钟前
Vue3_事件渲染命令
开发语言·javascript·ecmascript
倔强的小石头_18 分钟前
Python 从入门到实战(十一):数据可视化(用图表让数据 “说话”)
开发语言·python·信息可视化
StudyWinter26 分钟前
【c++】thread总结
开发语言·c++·算法
小鸡脚来咯31 分钟前
java泛型详解
java·开发语言
liuyouzhang34 分钟前
备忘-国密解密算法
java·开发语言
北冥有一鲲1 小时前
LangChain.js:Tool、Memory 与 Agent 的深度解析与实战
开发语言·javascript·langchain
吴佳浩 Alben1 小时前
Python入门指南(六) - 搭建你的第一个YOLO检测API
开发语言·python·yolo