💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 函数 * * * * * --: 作者:mick 时间:2019年1月23日 * * * * * 1. 函数分类 2. 什么是回调函数 2. 什么是匿名函数 3. 什么是闭包函数 4. 什么是自由变量 ### 函数的分类 1. 普通函数 2. 匿名函数 3. 闭包函数 4. 高阶函数 5. 回调函数 实现上述的其那题是:**支持头等函数(First Class Function)的编程语言,可以把函数赋值给变量,也可以把函数作为其它函数的参数或者返回值。Go 语言支持头等函数的机制**(https://studygolang.com/articles/12789?fr=sidebar) ### 什么是匿名函数: 定义:没有名字的函数就是匿名函数 ### 什么是闭包函数: 问题1:普通函数内部可以直接读取全局变量 问题2:什么时候函数可以访问局部变量 ``` func Closure()func() int { var n int return func()int{ n++ return n } } ``` **官方定义:**“官方”的解释是:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分 **闭包的特性:** 1. 封闭性:外界无法访问闭包内部的数据,如果在闭包内声明变量,外界是无法访问的,除非闭包主动向外界提供访问接口; 2. 持久性:一般的函数,调用完毕之后,系统自动注销函数,而对于闭包来说,在外部函数被调用之后,闭包结构依然保存在 ,系统中,闭包中的数据依然存在,从而实现对数据的持久使用。 ### 总结: 1. 闭包是一个有记忆的函数。 2. 闭包相当于一个只有一个方法的紧凑对象(a compact object)