闭包(closure)与协程共用时要注意的事情

本文介绍了闭包在Go语言中的概念和作用,包括如何使用闭包简化编程,以及闭包与协程结合时应注意的问题。示例展示了由于闭包捕获变量时的引用特性,可能导致意外的并发行为,解决方法是通过传参来避免共享状态。
摘要由CSDN通过智能技术生成

闭包是一种可以让你用非常舒服的方式来编程的小技巧,Go也支持闭包。如果从来没有接触过闭包,想在一开始就弄懂什么是闭包(closure)是非常困难的,就像递归一样,直到你真正写过、用过它,你才能真正的对它有一个更具体的认识。


闭包就是一个函数,这个函数包含了运行它所需的上下文环境,这个环境可能是几个变量或者也会是其他的(通常就是变量)。说闭包是一个函数不正确,更确切地说,闭包是一个打包了其作用域外部的上下文环境的一段运行环境。如果一时间没有理解这段闭包的含义也不要紧,这是一个循序渐进的过程。


那么我们来看一个网上最通用的讲解闭包的例子:

package main

import "fmt"

func A() func() int {
	value := 0
	return func() int {
		value++
		return value
	}
	
	// A()到这里时按理说
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值