两个方法返回的结果一致,为什么一定要用闭包?在什么情况下用闭包还是没懂 这个闭包的意义在哪
来源:7-1 函数式编程

凌晨1点583900196
2020-01-31
package main
import "fmt"
func main() {
sum := 0
a := addr()
for i := 1; i < 20; i++ {
sum = add(i, sum)
fmt.Println(sum)
fmt.Println(a(i))
}
}
func add(i int, sum int) int {
sum += i
return sum
}
func addr() func(int) int {
sum := 0
return func(i int) int {
sum += i
return sum
}
}
结果
1
1
3
3
6
6
10
10
15
15
21
21
28
28
36
36
45
45
55
55
66
66
78
78
91
91
105
105
120
120
136
136
153
153
171
171
190
190
写回答
1回答
-
ccmouse
2020-02-02
这里是展示了使用闭包也能够解决这个问题。
意义有两方面,一个是原理上,一个是用途。这里主要是看到原理上的意义。
我们这个通过调用addr()后,会收到一个返回的函数。这个返回的函数不只是一段代码,还包括了sum这个被打包进去的局部变量。
还有用途上的意义,我们先放一放,在后面的统一出错处理以及实战项目中,都有很自然的使用。
00
相似问题