type MyObject string
var objects []MyObject
Я хочу отсортировать эти объекты. В стандартной библиотеке есть sort.Strings
, но для этого требуется экземпляр []string
вместо []MyObject
.
Мое текущее решение состоит в том, чтобы реализовать sort.Interface
(как показано ниже) и использовать sort.Sort
, но я хотел бы избавиться от этого стандартного кода. Есть ли более приятный способ?
type MyObjects []MyObject
func (objs MyObjects) Len() int {
return len(objs)
}
func (objs MyObjects) Less(i, j int) bool {
return strings.Compare(string(objs[i]), string(objs[j])) < 0
}
func (objs MyObjects) Swap(i, j int) {
o := objs[i]
objs[i] = objs[j]
objs[j] = o
}
p[i], p[j] = p[j], p[i]
(спасибо, что напомнили мне об этом :) и компактные тела функций сводят шаблон к минимуму, так что я пойду с этим. 25.08.2015