En el lenguaje Go, el "análisis de escape" realizado por el compilador durante la fase de compilación determina si una variable se asigna en la pila o en el montón. Si una variable solo se usa dentro del alcance de la función, a menudo se asigna en la pila; si se hace referencia a una variable externamente o se devuelve fuera de la función, entonces puede "escapar" al montón.
Para ver los resultados del análisis de escape para un programa Go, puede usar las opciones al crear el programa -gcflags='-m'
. Por ejemplo:
go build -gcflags='-m' main.go
El compilador generará información sobre cómo se asignan las variables. Por ejemplo, podríamos ver un resultado similar al siguiente:
./main.go:9:6: can inline foo with cost 5 as: ...
./main.go:14:9: &x escapes to heap
./main.go:14:9: from ~r0 (return) at ./main.go:15:2
El resultado anterior muestra que en la línea 14 de main.go la variable x escapa al montón.