理解go的闭包

package main

import (
	"fmt"
	
	
)

func test(a int) {
	a++
	fmt.Println(a)
}

func test2() func() int{
	var a int
	return func() int {
		a++
		return a
	}
	
}

func main() {
	//a := 0
	//for i := 0; i < 10; i++ {
	//	test(a)
	//}
	
	//for i := 0; i < 10; i++ {
	//	fmt.Println(test2()())
	//}
	f := test2()
	for i := 0; i < 10; i++ {
		fmt.Println(f())
	}
	
	
	//var b int
	//f := func() int {
	//	b++
	//	return b
	//}
	//for i := 0; i<10; i++{
	//	fmt.Println(f())
	//}
}

  

原文地址:https://www.cnblogs.com/liangweixiong/p/9828574.html