Func Closures

概述 #

闭包的概念参考 闭包 - 维基百科

例子 #

自增序列号生成器 #

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
*/

转载申请

本作品采用 知识共享署名 4.0 国际许可协议 进行许可,转载时请注明原文链接,图片在使用时请保留全部内容,商业转载请联系作者获得授权。

© 蛮荆 | 陕公网安备 61011302001681 号 | 陕ICP备2023004378号-1 | Rendered by Hugo