Each function has stack frames associated with individual memory space. Functions have access to the memory inside the frame, and a frame pointer points to the memory's location. Transition between frames occurs when the function is invoked. Data is transferred by value from one frame to another during the transition.
Stack frame creation and memory allocation is demonstrated in the following code. The addOne function takes num and increments it by one. The function prints the value and address of num:
///main package has examples shown
// in Go Data Structures and algorithms book
package main
// importing fmt package
import (
"fmt"
)
// increment method
func addOne(num int) {
num++
fmt.Println("added to num", num, "Address of num", &num)
}
The main method initializes the variable number as 17. The number value and address...