Functions name reusable work and return values to the caller.

function A Go function declares parameter types and a return type in its signature.

Functions

side
function_intro.go
Replay: real traced execution (multi-file project)
package main

import "fmt"

func square(value int) int {
	return value * value
}

func main() {
	var side = 5
	area := square(side)

	fmt.Println("side=", side)
	fmt.Println("area=", area)
}
package main

import "fmt"

func square(value int) int {
	return value * value
}

func main() {
	var side = 3
	area := square(side)

	fmt.Println("side=", side)
	fmt.Println("area=", area)
}
package main

import "fmt"

func square(value int) int {
	return value * value
}

func main() {
	var side = 8
	area := square(side)

	fmt.Println("side=", side)
	fmt.Println("area=", area)
}
  1. side ← 5

    9func main() {10  var side→ 5 = 5 //@side=3, 811  area := square(side5)
  2. func square(value int) int

    5func square(value5 int) int {6  return value5 * value7}
  3. area ← 25

    10  var side = 5 //@side=3, 811  area→ 25 := square(side5)1213  fmt.Println("side=", side5)14  fmt.Println("area=", area25)15}
    outputside= 5
    area= 25
  1. side ← 3

    9func main() {10  var side→ 3 = 311  area := square(side3)
  2. func square(value int) int

    5func square(value3 int) int {6  return value3 * value7}
  3. area ← 9

    10  var side = 311  area→ 9 := square(side3)1213  fmt.Println("side=", side3)14  fmt.Println("area=", area9)15}
    outputside= 3
    area= 9
  1. side ← 8

    9func main() {10  var side→ 8 = 811  area := square(side8)
  2. func square(value int) int

    5func square(value8 int) int {6  return value8 * value7}
  3. area ← 64

    10  var side = 811  area→ 64 := square(side8)1213  fmt.Println("side=", side8)14  fmt.Println("area=", area64)15}
    outputside= 8
    area= 64

Follow the Function Call

  1. side starts at 5.
  2. square(side) sends 5 into the square function.
  3. The function returns 5 * 5.
  4. area becomes 25.
  5. The program prints side= 5 and area= 25. | side | square result | | --- | --- | | 3 | 9 | | 5 | 25 | | 8 | 64 |

Exercise: function_intro.go

Reproduce area= 25 for side 5, then try side 3 and 8 and predict each area before running it.