В Go есть анализатор
slicessort из пакета golang.org/x/tools/go/analysis. Он находит в коде паттерны сортировки через sort.Slice с простой функцией сравнения и предлагает заменить их на slices.Sort.Что он решает
Раньше, чтобы отсортировать срез базовых типов по возрастанию, писали так:
sort.Slice(s, func(i, j int) bool { return s[i] < s[j] })Это работает, но многословно. Начиная с Go 1.21 есть
slices.Sort, которая делает то же самое без лишнего кода:slices.Sort(s)
Анализатор проверяет вызовы
sort.Slice и ищет те, где функция-компаратор просто сравнивает элементы через <. Если срез содержит упорядоченный базовый тип (int, string, float64 и другие), анализатор помечает такой вызов и предлагает замену.Запустить можно через
go vet или любой линтер, поддерживающий analysis.Analyzer:go vet -vettool=$(which slicessort) ./...
Или через
golangci-lint, если анализатор подключён в конфиге.slicessort не делает ничего сложного. Он просто убирает бойлерплейт там, где стандартная библиотека уже давно предлагает лучше. Если проект на Go 1.21+, стоит добавить его в пайплайн.📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика
#GoToProduction