🟡 Средний · 2 очк. Стандартная библиотека
Чем slices.SortFunc (Go 1.21+) лучше sort.Slice?
A Ничем
B Типобезопасна благодаря generics, нет интерфейсных вызовов
C Быстрее работает
D Поддерживает стабильную сортировку
Объяснение вопроса

slices.SortFunc использует дженерики: принимает слайс конкретного типа и функцию сравнения без interface{} и рефлексии. Это быстрее и типобезопаснее.

// sort.Slice - через interface{}, рефлексия внутри
sort.Slice(s, func(i, j int) bool { return s[i] < s[j] })

// slices.SortFunc - дженерики, компилятор видит типы
slices.SortFunc(s, func(a, b int) int { return cmp.Compare(a, b) })

Плюсы SortFunc

  • Нет приведения типов и боксов
  • Функция сравнения может быть инлайнирована
  • Для стабильной сортировки есть slices.SortStableFunc
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.