yyz notes yyz notes
首页
  • RBAC权限设计
  • 架构图标设计
  • 账号体系
  • python基础
  • python高级
  • python模块
  • python设计模式
  • python数据结构与算法
  • django
  • django-DRF
  • flask
  • 直接设计开源pip包
  • 直接设计开源项目
  • python示例题/脚本
  • python面试题
  • golang基础
  • golang高级
  • golang常用组件
  • gin框架
  • es6
  • javascript
  • react
  • vue
  • TypeScript
  • mysql
  • redis
  • minio
  • elasticsearch
  • mongodb
  • 消息队列
  • 自动化测试
  • 操作系统

    • linux
    • windows
  • nginx
  • docker
  • k8s
  • git
  • ldap
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

益章

可乐鸡翅
首页
  • RBAC权限设计
  • 架构图标设计
  • 账号体系
  • python基础
  • python高级
  • python模块
  • python设计模式
  • python数据结构与算法
  • django
  • django-DRF
  • flask
  • 直接设计开源pip包
  • 直接设计开源项目
  • python示例题/脚本
  • python面试题
  • golang基础
  • golang高级
  • golang常用组件
  • gin框架
  • es6
  • javascript
  • react
  • vue
  • TypeScript
  • mysql
  • redis
  • minio
  • elasticsearch
  • mongodb
  • 消息队列
  • 自动化测试
  • 操作系统

    • linux
    • windows
  • nginx
  • docker
  • k8s
  • git
  • ldap
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • golang基础

    • 初识golang

    • golang基础语法

    • golang流程控制

    • golang函数

      • 普通函数-函数声明(函数定义使用)
      • 普通函数-函数声明调用的内存分析
      • 普通函数-函数细节注意点
      • 普通函数-自定义数据类型(别名)
      • 普通函数-函数的返回值
      • init函数
      • 匿名函数
      • 闭包(Closure)
        • 介绍
          • 特点
          • 闭包应用场景
        • 案例展示
          • 1. 使用闭包实现累加器
      • defer(延迟执行语句)
    • golang内置函数

    • golang包

    • golang错误异常处理

    • golang面向对象(结构体)

    • golang文件处理

    • golang并发编程简介

    • golang并发编程-协程

    • golang网络编程

    • 反射 reflect

  • golang高级

  • 常用组件

  • gin

  • golang
  • golang基础
  • golang函数
YiZhang-You
2023-05-24
目录

闭包(Closure)

# 闭包(Closure)

# 介绍

闭包本质依旧是一个匿名函数,只是这个函数引入外界的变量/参数 匿名函数+引用的变量/参数 = 闭包

# 特点

  • 返回的是一个匿名函数,但是这个匿名函数引用到函数外的变量/参数 ,因此这个匿名函数就和变量/参数形成一个整体,构成闭包。

  • 闭包中使用的变量/参数会一直保存在内存中,所以会一直使用---》意味着闭包不可滥用(对内存消耗大)

// 1. 接收一个函数
// 2. 内部函数使用外部函数的变量
// 3. 返回内部函数
1
2
3

# 闭包应用场景

闭包应用场景:闭包可以保留上次引用的某个值,我们传入一次就可以反复使用了(其实就是把闭包中的变量放到了全局变量中)

# 案例展示

# 1. 使用闭包实现累加器

package main

import "fmt"

// 1. 接收一个函数
// 2. 内部函数使用外部函数的变量
// 3. 返回内部函数
func accumulator() func(value int) int {
	var sum int = 0  // 本质就是把闭包中的变量放到了全局变量中
	return func(value int) int {
		sum = sum + value
		return sum
	}
}

func main() {
	v1 := accumulator()
	fmt.Println(v1(1))
	fmt.Println(v1(2))
	fmt.Println(v1(3))
}

/*
	1
	3
	6
*/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
编辑 (opens new window)
匿名函数
defer(延迟执行语句)

← 匿名函数 defer(延迟执行语句)→

最近更新
01
配置yun源
05-24
02
linux-配置python虚拟环境
05-24
03
linux文件目录管理
05-24
更多文章>
Theme by Vdoing | Copyright © 2023-2023 yizhang | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式