Задать вопрос
hugga
@hugga

Почему вместимость среза в Golang нельзя расширить в обратном направлении (влево)?

Почему вместимость среза безвозвратно режется именно с левой стороны?
Например из учебного тура можно понять, если мы срежем изначальный массив/срез с
arr := []int{1, 2, 3, 4, 5}
до
arr = arr[:0] // []
его значения можно будет восстановить до исходного вида
arr = arr[:5] // [1 2 3 4 5]
а вот если мы этот же массив/срез срежем с левой стороны, например
arr = arr[5:] // []
то восстановить его уже нельзя
Чем обуславливается такая механика? Почему бы не сделать обратную индексацию как в Python например?
  • Вопрос задан
  • 265 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Xilian
Программист 1С, сетевые технологии, SQL
Что значит восстановить?

arr = arr[:0] - это аналог arr[0:len(arr)];

arr = arr[5:] - это аналог arr[5:len(arr)];

В первом случае - в срезе все 5 элементов - во втором 1 последний.

Начинайте изучать алгоритмы и типы данных с паскаля или Си - меньше таких вопросов будет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы