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  }