Go的闭包理解

笔记仓库:gitee.com/xiaoyinhui



/*
	对闭包来说,函数在该语言中得是一等公民。
	一般来说,一个函数返回另外一个函数,这个被返回的函数可以引用外层函数的局部变量,这形成了一个闭包。
	通常,闭包通过一个结构体来实现,它存储一个函数和一个关联的上下文环境。
	但 Go 语言中,匿名函数就是一个闭包,它可以直接引用外部函数的局部变量
*/

func app() func(string) string {
   
	t := "Hi"

	// 比如这里的 c 和上面的 t 就是一个闭包,可以理解为是一整个结构体
	c := func(b string) string {
   
		t = t + " " + b
		fmt.Println("t 地址:", &t)
		return t
	}

	// 这里的返回值 c 可以理解为返回了一个结构体,里面包含 c和t 两个成员变量
	return c
}

func TestBiBao(t *testing.T) {
   
	// 这里的a可以理解为 一个结构体 里面有上面的c和t
	a := app()
	// 这里的a可以理解为 一个结构体 里面也有上面的c和t,但是 a和b 这里已经不相关联了
	b := app()

	// 这里操作一次a 相当于是修改了a这个“结构体”里面t的值   t = Hi go
	a("go")
	// 这里操作的是b这个“结构体”里面t的值   t = Hi All
	fmt.Println(b("All"))
	// 同理这里操作的是“结构体”a 里面的 t = Hi go All
	fmt.Println(a("All"))
	// 同理这里操作的是“结构体”a 里面的 t = Hi go All xiaoyin
	fmt.Println(a("xiaoyin"))
}


一点点笔记,以便以后翻阅。

相关推荐

  1. Go理解

    2024-02-21 16:12:03       27 阅读
  2. 如何理解

    2024-02-21 16:12:03       22 阅读
  3. 2024-4-14关于理解

    2024-02-21 16:12:03       14 阅读
  4. Go】匿名函数与

    2024-02-21 16:12:03       12 阅读
  5. (js问题)

    2024-02-21 16:12:03       34 阅读
  6. react陷阱

    2024-02-21 16:12:03       15 阅读
  7. Python:深入理解与应用场景解析

    2024-02-21 16:12:03       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-21 16:12:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-21 16:12:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-21 16:12:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-21 16:12:03       18 阅读

热门阅读

  1. 华为配置STA双栈业务覆盖业务示例

    2024-02-21 16:12:03       30 阅读
  2. SpringBoot整理-错误处理

    2024-02-21 16:12:03       29 阅读
  3. 前端构造树算法优化

    2024-02-21 16:12:03       22 阅读
  4. 正则表达式预查寻也称断言,限定左右相邻内容

    2024-02-21 16:12:03       32 阅读
  5. QT day2

    QT day2

    2024-02-21 16:12:03      24 阅读
  6. 2.20数据结构与算法学习日记(二叉树第一部分)

    2024-02-21 16:12:03       31 阅读
  7. vitepress做自己的组件库文档

    2024-02-21 16:12:03       35 阅读
  8. 备战蓝桥杯 Day9(最长公共子序列LCS模型)

    2024-02-21 16:12:03       18 阅读