gobyexample-closures

2018-11-07  本文已影响0人  bocsoft

来源:https://github.com/xg-wang/gobyexample/tree/master/examples

// Go 支持 [_匿名函数_],并能用其构造闭包。
//匿名函数在你想定义一个不要命名的内联函数时很实用
package main

import "fmt"

//此函数返回另一个在函数体内定义的匿名函数。这个函数使用闭包的方式_隐藏_变量`i`
func intSeq() func() int {
    i := 0
    return func() int {
        i++
        return i
    }
}

func main() {
    nextInt := intSeq()

    //该返回的函数,每次调用时都会更新自己的`i`的值,达到闭包的效果
    fmt.Println(nextInt()) //1
    fmt.Println(nextInt()) //2
    fmt.Println(nextInt()) //3

    //其状态对于特定的函数是唯一的
    newInts := intSeq()
    fmt.Println(newInts()) //1
}

输出结果:

1
2
3
1
上一篇下一篇

猜你喜欢

热点阅读