go 闭包,用来替换全局变量
一个函数,需要用到一个多个全局变量。
但不想声明一个全局变量,因为这个变量只有这个函数使用。
在 C++ 中,可以用 static 来干。
在 go 中,可以用闭包来干。
package mainimport "fmt"// 使用全局变量 beginvar i = 0func addone() int {i++return i}// 使用全局变量 end// 使用闭包 beginfunc addoneClosure() func() int {j := 0return func() int {j++return j}}// 使用闭包 endfunc main() {fmt.Println(addone(), addone(), addone())f := addoneClosure()fmt.Println(f(), f(), f())}
