go语言—闭包

  • 函数+引用环境=闭包
  • 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、付费专栏及课程。

余额充值