Go 中闭包函数
go是一门面向函数编程的通用语言,其中闭包函数是函数是编程的一个非常重要的特性,本文用代码,以累加器在go中用闭包函数实现的方法阐述这一特性。
提示:以下是本篇文章正文内容,下面案例可供参考
一、闭包函数概念
闭包函数,即在一个封闭作用域中的函数,这个函数可以使用封闭作用域中的所有变量。也就是使用该函数时除了函数中的变量(函数变量)还可以对闭包中的函数(自由变量进行操作)
二、Go中累加器实现
1.代码
代码如下(示例):
package main
import "fmt"
func accumlator()func(uint8) uint8{
var sum uint8
return func(u uint8) uint8 {
sum +=u
fmt.Printf("sum for 1 to %d is %d\n",u,sum)
return sum
}
}
func main() {
f := accumlator()
for i:=0;i<10;i++{
f(uint8(i))
}
}
- 定义函数accumlator入参为一个字节的无符号整型(uint8),return一个入参为uint8,返回值为uint8的匿名函数。
- 在accumlator中定义名为sum的自由变量。
- 在main方法中先声明accumlator函数变量f,f的返回值为在accumlator函数体中定义的匿名函数,通过循环传入函数变量调用匿名函数。
2.图示
闭包函数概念图:
总结
在go中函数为一等公民,可以做为变量,入参,出参,在go中闭包的实现可以通过将函数中出参定义为函数的方法来实现闭包的概念
代码拉取
如果对你有帮助,请fork或者star一下,支持作者