https://www.calhoun.io/5-useful-ways-to-use-closures-in-go/

5种有用的闭包

在本文中,我们将探索闭包和匿名函数的几种不同的实际用例,以便您能够更好地理解闭包何时是合适的,并了解它们如何应用于不同的情况。

1.隔离数据

假设您想创建一个函数,该函数可以访问即使在函数退出之后仍然存在的数据。例如,您想要计算函数被调用了多少次,或者您想要创建一个fibonacci数字生成器,但是您不想让任何人访问该数据(这样他们就不会意外地更改它)。您可以使用闭包来实现这一点。

 1 package main
 2 
 3 import "fmt"
 4 
 5 func main() {
 6   gen := makeFibGen()
 7   for i := 0; i < 10; i++ {
 8     fmt.Println(gen())
 9   }
10 }
11 
12 func makeFibGen() func() int {
13   f1 := 0
14   f2 := 1
15   return func() int {
16     f2, f1 = (f1 + f2), f2
17     return f1
18   }
19 }
View Code

相关文章: