package docker import "sort" type portSorter struct { ports []Port by func(i, j Port) bool } func (s *portSorter) Len() int { return len(s.ports) } func (s *portSorter) Swap(i, j int) { s.ports[i], s.ports[j] = s.ports[j], s.ports[i] } func (s *portSorter) Less(i, j int) bool { ip := s.ports[i] jp := s.ports[j] return s.by(ip, jp) } func sortPorts(ports []Port, predicate func(i, j Port) bool) { s := &portSorter{ports, predicate} sort.Sort(s) } type containerSorter struct { containers []*Container by func(i, j *Container) bool } func (s *containerSorter) Len() int { return len(s.containers) } func (s *containerSorter) Swap(i, j int) { s.containers[i], s.containers[j] = s.containers[j], s.containers[i] } func (s *containerSorter) Less(i, j int) bool { return s.by(s.containers[i], s.containers[j]) } func sortContainers(containers []*Container, predicate func(i, j *Container) bool) { s := &containerSorter{containers, predicate} sort.Sort(s) }