github.com/xuyutom/docker@v1.6.0/nat/sort.go (about) 1 package nat 2 3 import "sort" 4 5 type portSorter struct { 6 ports []Port 7 by func(i, j Port) bool 8 } 9 10 func (s *portSorter) Len() int { 11 return len(s.ports) 12 } 13 14 func (s *portSorter) Swap(i, j int) { 15 s.ports[i], s.ports[j] = s.ports[j], s.ports[i] 16 } 17 18 func (s *portSorter) Less(i, j int) bool { 19 ip := s.ports[i] 20 jp := s.ports[j] 21 22 return s.by(ip, jp) 23 } 24 25 func Sort(ports []Port, predicate func(i, j Port) bool) { 26 s := &portSorter{ports, predicate} 27 sort.Sort(s) 28 }