github.com/l3x/learn-fp-go@v0.0.0-20171228022418-7639825d0b71/1-functional-fundamentals/ch03-hof/03_hof/main.go (about) 1 package main 2 3 import ( 4 . "hof" 5 "log" 6 "os" 7 "github.com/julienschmidt/httprouter" 8 "net/http" 9 ) 10 11 func init() { 12 log.SetFlags(log.Lshortfile | log.Ldate) 13 log.SetOutput(os.Stdout) 14 } 15 16 17 func main() { 18 19 if os.Getenv("RUN_HTTP_SERVER") == "TRUE" { 20 router := httprouter.New() 21 router.GET("/cars", CarsIndexHandler) 22 router.GET("/cars/:id", CarHandler) 23 log.Println("Listening on port 8000") 24 log.Fatal(http.ListenAndServe(":8000", router)) 25 } else { 26 27 cars := LoadCars() 28 log.Printf("cars: %+v", cars) 29 30 //PrintCars("ByMake - Honda", cars.Filter(ByMake("Honda"))) 31 // 32 //PrintCars("Numeric", cars.Filter(ByHasNumber())) 33 // 34 //PrintCars("Foreign, Numeric, Toyota", 35 // cars.Filter(ByForeign()). 36 // Filter(ByHasNumber()). 37 // Filter(ByMake("Toyota"))) 38 // 39 //PrintCars("Domestic, Numeric, GM", 40 // cars.Filter(ByDomestic()). 41 // Filter(ByHasNumber()). 42 // Filter(ByMake("GM"))) 43 // 44 //moreCars := LoadMoreCars() 45 // 46 //PrintCars("More Cars, Domestic, Numeric, GM", 47 // cars.AddCars(moreCars). 48 // Filter(ByDomestic()). 49 // Filter(ByHasNumber()). 50 // Filter(ByMake("GM"))) 51 // 52 //PrintCars("More Cars, Domestic, Numeric, Ford", 53 // cars.AddCars(moreCars). 54 // Filter(ByDomestic()). 55 // Filter(ByHasNumber()). 56 // Filter(ByMake("Ford"))) 57 // 58 // 59 //PrintCars("Numeric, Foreign, Map Upgraded", 60 // cars.Filter(ByHasNumber()). 61 // Filter(ByForeign()). 62 // Map(Upgrade())) 63 // 64 //PrintCars("Filter Honda, Reduce JSON", 65 // cars.Filter(ByMake("Honda")). 66 // Reduce(JsonReducer(cars), Collection{})) 67 // 68 //PrintCars("Reduce, Honda, JSON", 69 // cars.Reduce(MakeReducer("Honda", cars), Collection{}). 70 // Reduce(JsonReducer(cars), Collection{})) 71 // 72 //PrintCars2("Reduce - Lexus", 73 // cars.Filter(ByMake("Lexus")). 74 // Reduce2(CarTypeReducer(cars), []CarType{})) 75 // 76 //PrintCars("ByModel - Accord up/downgraded", 77 // cars.Filter(ByModel("Accord")). 78 // Map(Upgrade()). 79 // Map(Downgrade())) 80 81 PrintCars("GenerateCars(1, 3)", 82 cars.GenerateCars(1, 3)) 83 84 PrintCars("GenerateCars(1, 14), Domestic, Numeric, JSON", 85 cars.GenerateCars(1, 14). 86 Filter(ByDomestic()). 87 Map(Upgrade()). 88 Filter(ByHasNumber()). 89 Reduce(JsonReducer(cars), Collection{})) 90 91 } 92 } 93