Junior — Middle
How does the use of the stack change during the execution of a program?
sobes.tech AI
Answer from AI
During program execution, the stack is used to store information about function calls, local variables, and control flow.
When a function is called, a frame (call context) is placed on the stack, which contains:
- Return address (where to return after the function completes)
- Local variables
- Function parameters
When the function finishes, its frame is removed from the stack.
In Go, the stack grows and shrinks dynamically as needed, allowing efficient memory use. For example, when a recursive function is called, the stack expands, and when functions return, it contracts.
Example:
func factorial(n int) int {
if n == 0 {
return 1
}
return n * factorial(n-1)
}
func main() {
result := factorial(5)
fmt.Println(result) // 120
}
Here, each call to factorial adds a new frame to the stack, which is removed upon returning from the function.