首页 > 编程语言 > 详细

go语言闭包

时间:2021-05-12 00:15:35      阅读:25      评论:0      收藏:0      [点我收藏+]

一、基本介绍

闭包就是一个函数和于其相关的引用环境组合的一个整体

二、案例演示

累计器

package main

import (
	"fmt"
)

func AddUpper() func(int) int {
	n := 10
	return func(x int) int {
		n = n + x
		return n
	}
}

func main() {
	f := AddUpper()
	fmt.Printf("res=%d\n", f(1))
	fmt.Printf("res=%d\n", f(2))
	fmt.Printf("res=%d\n", f(3))
}

输出结果:

res=11
res=13
res=16

说明:

  1. AddUpper是函数,返回的数据类型是func(int) int
  2. AddUpper返回的是一个匿名函数,但是这个匿名函数引用函数外的n,因此这个匿名函数就和n形成一个整体,构成闭包。
  3. 大家可以这样理解:闭包是类,函数时操作,n是字段。函数和它使用的n构成闭包
  4. 当我们反复的调用f时,因为n时初始化一次,因此每调用一次就进行累加,不会重新初始化
  5. 我们高清楚闭包的关键,就是要分析出返回的函数和它引用了哪些变量,因为返回的函数和它引用到的变量共同构成闭包

go语言闭包

原文:https://www.cnblogs.com/adong2021/p/14757831.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!