🟢 Лёгкий · 1 очк. Стандартная библиотека
Какой интерфейс нужно реализовать для сортировки кастомного типа через sort.Sort?
A sort.Interface с методами Len() int, Less(i, j int) bool, Swap(i, j int)
B sort.Sortable с методом Compare
C fmt.Stringer
D sort.Comparable с методом Less
Объяснение вопроса

sort.Interface - классический пример интерфейса Go с тремя методами:

type ByAge []Person

func (a ByAge) Len() int           { return len(a) }
func (a ByAge) Less(i, j int) bool { return a[i].Age < a[j].Age }
func (a ByAge) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }

// Использование:
people := []Person{{Name: "Alice", Age: 30}, {Name: "Bob", Age: 25}}
sort.Sort(ByAge(people))
// [{Bob 25} {Alice 30}]

Начиная с Go 1.21 для большинства случаев удобнее slices.SortFunc:

slices.SortFunc(people, func(a, b Person) int {
    return cmp.Compare(a.Age, b.Age)
})

sort.Interface остается полезен, когда нужна стабильная сортировка (sort.Stable) или когда один тип нужно сортировать по разным критериям (несколько типов-оберток).

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.