github.com/l3x/learn-fp-go@v0.0.0-20171228022418-7639825d0b71/1-functional-fundamentals/ch03-hof/04_scoping/main.go (about) 1 package main 2 3 import ( 4 "fmt" 5 ) 6 7 var sum = 5 8 9 func addTwo() func() int { 10 sum := 0 11 return func() int { // anonymous function 12 sum += 2 13 return sum 14 } 15 } 16 17 func addTwoDynamic() func() int { 18 return func() int { 19 sum += 2 20 return sum 21 } 22 } 23 24 func main() { 25 twoMore := addTwo() 26 fmt.Println(twoMore()) 27 fmt.Println(twoMore()) 28 29 twoMoreDynamic := addTwoDynamic() 30 fmt.Println(twoMoreDynamic()) 31 fmt.Println(twoMoreDynamic()) 32 }