new和make区别
- new(T)返回*T指向一个零值T
- make(T)返回初始化后的T
make仅适用于slice、map、channel
闭包
闭包是由 函数及其相关引用环境组合而成的实体 (即:闭包 = 函数 + 引用环境)
- Go语言能通过escape analyze识别出变量的作用域,自动将变量在堆上分配。将闭包环境变量在堆上分配是Go实现闭包的基础。
- 返回闭包时并不是单纯返回一个函数,而是返回了一个结构体,记录下函数返回地址和引用的环境中的变量地址。
闭包是由 函数及其相关引用环境组合而成的实体 (即:闭包 = 函数 + 引用环境)