Алгоритм многим известен, есть реализации под множество языков, но под Go я не нашел.
Суть алгоритма: проходим от начала до середины слайса, элементы в конце слайса и в начале меняем местами.
Код программы:
package main
import (
"fmt"
"reflect"
)
func main() {
// исходные слайсы
s := []int{1, 2, 3, 4, 5}
s2 := []int{1, 2, 3, 4, 5, 6}
// переворачиваем
revert(s)
revert(s2)
// выводим
fmt.Println(s, s2)
}
// revert ничего не возвращает, потому что меняет исходный слайс
func revert(s []int) {
length := len(s)
// swapper - инструмент для перестановки элементов в слайсе
swapper := reflect.Swapper(s)
for i := 0; i < length/2; i++ {
// меняем местами первый и последний элементы, второй и предпоследний...
swapper(i, length-i-1)
}
}
Результат работы программы:
[5 4 3 2 1] [6 5 4 3 2 1]
Пожалуйста, оцените на сколько вам понравилась статья!
Голосов: 3 Среднее: 5