Closures and variable scoping
Closures are closely related to how variable scoping works in a given programming language. To fully understand how they work and how they become useful, we will first do a quick refresher on how variable scoping works in Go. Next, we’ll remind ourselves of how anonymous functions work and what they are. Finally, we will take a look at what closures are in this context. This will set us up to properly understand partial application and function currying when we get to those techniques later in the chapter.
Variable scoping in Go
Variable scoping in Go is done by what is called lexical scoping. This means that a variable is identified and usable within the context where it was created. In Go, “blocks” are used to delineate locations in code. For example, see the following:
package main import "fmt" // location 1 func main() { // location 2 b := true ...