package docker import "sort" type imageSorter struct { images []APIImages by func(i1, i2 *APIImages) bool // Closure used in the Less method. } // Len is part of sort.Interface. func (s *imageSorter) Len() int { return len(s.images) } // Swap is part of sort.Interface. func (s *imageSorter) Swap(i, j int) { s.images[i], s.images[j] = s.images[j], s.images[i] } // Less is part of sort.Interface. It is implemented by calling the "by" closure in the sorter. func (s *imageSorter) Less(i, j int) bool { return s.by(&s.images[i], &s.images[j]) } // Sort []ApiImages by most recent creation date and tag name. func sortImagesByCreationAndTag(images []APIImages) { creationAndTag := func(i1, i2 *APIImages) bool { return i1.Created > i2.Created || (i1.Created == i2.Created && i2.Tag > i1.Tag) } sorter := &imageSorter{ images: images, by: creationAndTag} sort.Sort(sorter) }