go语言—闭包

文章介绍了Go语言中的闭包现象,闭包是指匿名函数引用了外部变量。通过三个示例展示了闭包如何在不同场景下工作:改变外部变量值、作为返回值以及参数传递。每个示例都清晰地解释了闭包如何保持对外部环境的引用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 函数+引用环境=闭包
  • go语言中闭包指引用了外部变量的匿名函数

示例1:

// 准备一个字符串
str := "sport"
// 创建匿名函数
f := func(){
	//给str一个新值,此时匿名函数引用了外部变量,形成了闭包
	str := "study"
	fmt.Println(str)
}
f() //执行闭包

示例2:

func add()func()int{ //定义一个函数,返回值是匿名函数
	sum := 0
	num := 1
	return func()int{ 
		sum=sum+num //返回值匿名函数中引用了匿名函数外部的变量sum和num,形成闭包
		return sum
	}
}
a := add() //执行add函数,将返回的匿名函数当作值赋给a
fmt.Println(a()) //执行a即执行匿名函数

示例3:

func mSuffix(suffix string)func(string)string{ // 定义函数mSuffix,返回值为匿名函数
	return func(name string)string{ // 返回匿名函数
		if !strings.HasSuffix(name,suffix){ // 判断name是否以suffix结尾,此处引用了匿名函数外部变量suffix
			return name + suffix
		}
		return name
	}
}
jpgFunc := mSuffix(".jpg")
fmt.Println(jpcFunc("test"))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值