码迷,mamicode.com
首页 > 编程语言 > 详细

015_go语言中的闭包

时间:2018-03-30 21:57:33      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:更新   AC   方式   nts   结果   port   状态   class   匿名函数   

代码演示

package main

import "fmt"

func intSeq() func() int {
    i := 0
    return func() int {
        i++
        return i
    }
}

func main() {
    nextInt := intSeq()

    fmt.Println(nextInt())
    fmt.Println(nextInt())
    fmt.Println(nextInt())

    newInts := intSeq()
    fmt.Println(newInts())
}

代码运行结果

1
2
3
1

代码解读:

  • go语言支持匿名函数,可以用来构造闭包
  • 第一段创集了一个intSeq函数,intSeq函数返回另一个在intSeq函数体内定义的匿名函数。这个返回的函数使用闭包的方式隐藏变量i
  • 当调用intSeq函数时,将返回值(一个函数)赋给nextInt。这个函数的值包含了自己的值i,这样在每次调用nextInt时都会更新i的值
  • 闭包这个状态对于特定的函数是唯一的,后面重新创建newInts并测试

015_go语言中的闭包

标签:更新   AC   方式   nts   结果   port   状态   class   匿名函数   

原文地址:https://www.cnblogs.com/Joestar/p/8678021.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!