closures

作者: 暗黑破坏球嘿哈 | 来源:发表于2016-07-07 16:23 被阅读16次

    一个闭包例子,侵删

    package main
    
    import "fmt"
    
    // This function `intSeq` returns another function, which
    // we define anonymously in the body of `intSeq`. The
    // returned function _closes over_ the variable `i` to
    // form a closure.
    func intSeq() func() int {
        i := 0
        return func() int {
            i += 1
            return i
        }
    }
    
    func main() {
    
        // We call `intSeq`, assigning the result (a function)
        // to `nextInt`. This function value captures its
        // own `i` value, which will be updated each time
        // we call `nextInt`.
        nextInt := intSeq()
    
        // See the effect of the closure by calling `nextInt`
        // a few times.
        fmt.Println(nextInt())
        fmt.Println(nextInt())
        fmt.Println(nextInt())
    
        // To confirm that the state is unique to that
        // particular function, create and test a new one.
        newInts := intSeq()
        fmt.Println(newInts())
    

    相关文章

      网友评论

        本文标题:closures

        本文链接:https://www.haomeiwen.com/subject/rfkfdttx.html