Go 函数栈布局 栈帧(stack frame):一个函数的栈空间 栈基(bp): 栈底 栈顶(sp) :栈指针 函数通过call指令进行跳转,ret指令返回 闭包 包含自由变量(函数外部定义但在内部引用) 即便脱离了形成闭包的上下文也能正常运行 闭包称为有状态函数 functionValue是一个包含function指针的二级指针 捕获变量 保证外层函数与闭包函数的一致性 被捕获的变量除了初始化没有被修改过则直接拷贝值 闭包导致局部变量堆分配(导致变量逃逸) 捕获返回值是闭包对象时,编译器会在堆上创建返回值副本