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  }