Let’s build a sample app that will demonstrate the benefits of applying functional programming concepts to Go.
Our app will read from the following cars.csv
file:
"Honda Accord" "Honda Accord ES2" "Lexus IS250" "Honda CR-V" "Lexus SC 430" "Ford F-150" "Toyota Highlander" "Toyota RAV4" "GM Hummer H2" "GM Hummer H3"
We will apply high-order functions and various functional programming constructs to the list of cars to filter, map, reduce, and transform it to our heart's content. Our project is structured as follows:
$ tree . ├── README.md └── chapter4 ├── 01_hof │ ├── cars.csv │ ├── cars.go │ ├── generator.go │ ├── more_cars.csv │ ├── restful.go │ ├── types.go │ └── utils.go └── main.go
At the root of the chapter4
directory is our main.go
file. Since we plan to build a Go executable from main.go
and run it, we use the package name of main
and include a main()
function.
The other files will be in a subdirectory named 01_hof
, where hof
stands for high-order functions...