github.com/l3x/learn-fp-go@v0.0.0-20171228022418-7639825d0b71/4-purely-functional/ch09-functor-monoid/02_generics_cars/main.go (about) 1 package main 2 3 import ( 4 "fmt" 5 . "car" 6 ) 7 8 func main() { 9 var cars = CarSlice{ 10 Car{"Honda", "Accord", 3000}, 11 Car{"Lexus", "IS250", 40000}, 12 Car{"Toyota", "Highlander", 3500}, 13 Car{"Honda", "Accord ES", 3500}, 14 } 15 fmt.Println("cars:", cars) 16 17 honda := func (c Car) bool { 18 return c.Make == "Honda" 19 } 20 fmt.Println("filter cars by 'Honda':", cars.Where(honda)) 21 22 price := func (c Car) Dollars { 23 return c.Price 24 } 25 fmt.Println("Hondas prices:", cars.Where(honda).SelectDollars(price)) 26 27 fmt.Println("Hondas sum(prices):", cars.Where(honda).SumDollars(price)) 28 }