Anonymous functions can be stored in variables and use surrounding values.

Anonymous Functions

anonymous_functions.go
package main

import "fmt"

func main() {
	var multiplier = 
	scale := func(value int) int {
		return value * multiplier
	}
	result := scale(4)

	fmt.Println("multiplier=", multiplier)
	fmt.Println("result=", result)
}
package main

import "fmt"

func main() {
	var multiplier = 
	scale := func(value int) int {
		return value * multiplier
	}
	result := scale(4)

	fmt.Println("multiplier=", multiplier)
	fmt.Println("result=", result)
}
package main

import "fmt"

func main() {
	var multiplier = 
	scale := func(value int) int {
		return value * multiplier
	}
	result := scale(4)

	fmt.Println("multiplier=", multiplier)
	fmt.Println("result=", result)
}
closure An anonymous function can close over variables from the surrounding function.