Go 堆与栈使用概览
简洁展示 Go 中哪些东西住栈、哪些住堆
栈
自动管理,函数返回即释放
局部变量
函数内用完即丢
函数参数 / 返回值
值拷贝传递
goroutine 栈帧
初始 2KB,自动扩容
指针变量本身
存地址,不存数据
堆
GC 管理,生命周期灵活
逃逸到堆的变量
返回指针 / 超出函数生命周期
make / new 的结果
slice、map、channel
闭包捕获的变量
生命周期比函数更长
interface{} 持有的值
编译期类型不确定
逃逸