go语言从例子开始之Example15.闭包

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

 

你可能感兴趣的:(go语言从例子开始之Example15.闭包)