面试真题

Go · 中等 · 众图互动

golang逃逸情况分析

中等 Go 🎤 众图互动
参考答案
结论:Go逃逸分析在编译期判定变量分配位置,常见逃逸情况如下:1) 函数返回局部变量指针(如 return &localVar);2) 变量尺寸编译期未知(如 make([]int, n) 且n为变量)或栈空间不足;3) 变量被发送到通道、赋值给接口(interface{} 装箱);4) 闭包引用外部变量且闭包生命周期超出函数;5) 在切片/map中存储指针或反射使用。原理:编译器通过数据流分析对象作用域,若逃逸出当前栈帧则分配堆。对比栈分配自动回收,堆分配依赖GC。使用-gcflags=-m可定位。
题目整理自公开面经,答案由校招宝自研生成,仅供参考