Foundations
Functions
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
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)
}
side ← 5
9func main() {10 var side→ 5 = 5 //@side=3, 811 area := square(side5)func square(value int) int
5func square(value5 int) int {6 return value5 * value7}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
side ← 3
9func main() {10 var side→ 3 = 311 area := square(side3)func square(value int) int
5func square(value3 int) int {6 return value3 * value7}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
side ← 8
9func main() {10 var side→ 8 = 811 area := square(side8)func square(value int) int
5func square(value8 int) int {6 return value8 * value7}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
sidestarts at5.square(side)sends5into thesquarefunction.- The function returns
5 * 5. areabecomes25.- The program prints
side= 5andarea= 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.