github.com/packtpublishing/learning-functional-programming-in-go@v0.0.0-20230130084745-8b849f6d58c4/Chapter01/01_oop/cars.go (about) 1 package main 2 3 import ( 4 "errors" 5 "fmt" 6 ) 7 8 type Car struct { 9 Model string 10 } 11 type Cars []Car 12 13 func (cars *Cars) Add(car Car) { 14 myCars = append(myCars, car) 15 } 16 17 func (cars *Cars) Find(model string) (*Car, error) { 18 for _, car := range *cars { 19 if car.Model == model { 20 return &car, nil 21 } 22 } 23 return nil, errors.New("car not found") 24 } 25 26 var myCars Cars 27 28 func main() { 29 myCars.Add(Car{"IS250"}) 30 myCars.Add(Car{"Blazer"}) 31 myCars.Add(Car{"Highlander"}) 32 33 car, err := myCars.Find("Highlander") 34 if err != nil { 35 fmt.Printf("ERROR: %v", car) 36 } else { 37 fmt.Printf("Found %v", car) 38 } 39 } 40