乐趣区

关于go:Go-快速入门指南-闭包

概述

闭包的概念参考 闭包 – 维基百科 )

例子

自增序列号生成器

package main

import "fmt"

// 自增序列号生成器
func incSeq() func() int {
    i := 0
    return func() int {
        i++
        return i
    }
}

func main() {next := incSeq()

    fmt.Printf("初始值 = %d\n", next())

    for i := 1; i <= 5; i++ {fmt.Printf("第 %d 次迭代后, 值 = %d\n", i, next())
    }
}

// $ go run main.go
// 输入如下 
/**
  初始值 = 1
  第 1 次迭代后, 值 = 2
  第 2 次迭代后, 值 = 3
  第 3 次迭代后, 值 = 4
  第 4 次迭代后, 值 = 5
  第 5 次迭代后, 值 = 6
*/

分割我

退出移动版