Go 支持通过 闭包来使用 匿名函数。匿名函数在你想定义一个不需要命名的内联函数时是很实用的。
Example:
package main import "fmt" func intfunc() func() int{ i := 0 return func() int{ i += 1 return i } } func main(){ //注意nextint返回的是一个函数,引用时要带括号,否则是个对象 nextint := intfunc() //每次调用返回一个值,有点像python中的生成器。 fmt.Println(nextint()) fmt.Println(nextint()) fmt.Println(nextint()) //重新实例,值从新开始。 new_next_int := intfunc() fmt.Println(new_next_int()) }
Result:
$ go run example.go
1
2
3
1