package types import ( "time" ) type Stop struct { trips map[string]*Trip StopID string `json:"stop_id" csv:"stop_id"` StopName string `json:"stop_name" csv:"stop_name"` StopLat float64 `json:"stop_lat" csv:"stop_lat"` StopLon float64 `json:"stop_lon" csv:"stop_lon"` LocationType int `json:"location_type" csv:"location_type"` Transfers []*Transfer `json:"transfers" csv:"transfers"` } func (s *Stop) AddTransfer(transfer *Transfer) { if s.Transfers == nil { s.Transfers = make([]*Transfer, 0) } s.Transfers = append(s.Transfers, transfer) } func (s *Stop) AddTrip(trip *Trip) { if s.trips == nil { s.trips = make(map[string]*Trip) } s.trips[trip.TripID] = trip } func (s *Stop) GetTripsAfter(time time.Time) []*Trip { var trips []*Trip for _, trip := range s.trips { for _, stop := range trip.Stops { if stop.StopID == s.StopID && stop.DepartsAfter(time) { trips = append(trips, trip) break } } } return trips }