В Go есть паттерн для перебора слайса в обратном порядке. Выглядит он так:
for i := len(s) - 1; i >= 0; i-- {
use(s[i])
}Работает, но заставляет читателя каждый раз вручную разворачивать логику у себя в голове.
Go 1.23 добавил
slices.Backward из пакета slices. Теперь тот же цикл можно написать так:for _, v := range slices.Backward(s) {
use(v)
}Если в теле цикла нужен не только элемент, но и его позиция, оба значения остаются доступны:
for i, v := range slices.Backward(s) {
fmt.Println(i, v)
}Переписывать старые циклы вручную никто не хочет. Для этого есть анализатор
slicesbackward из пакета golang.org/x/tools. Так что меняем все такие паттерны на новые методы:go vet -vettool=$(which modernize) ./...
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика
#GoToProduction