💬 Как ведут себя срезы в Go на граничных значениях?
🔸 Создание среза: срез может быть создан с использованием выражения
🔸 Границы индексов: значения
🔸 Пустые срезы: если
🔸 Выход за границы: если
🔸 Изменение исходного массива: срезы в Go являются ссылками на исходный массив. Это означает, что изменения в срезе отразятся на исходном массиве и на всех других срезах, сделанных из этого массива.
🔸
🔸 Увеличение емкости среза: если при добавлении элементов в срез его емкость оказывается недостаточной, Go автоматически создаст новый массив с большей емкостью и скопирует в него элементы из исходного среза.
🔸 Создание среза: срез может быть создан с использованием выражения
a[low : high]
, где a
— массив или другой срез, low
— начальный индекс, а high
— конечный индекс (не включительно). Если low
равно 0, его можно опустить. Если high
равно длине массива, его также можно опустить.🔸 Границы индексов: значения
low
и high
должны удовлетворять условиям 0 <= low <= high <= cap(a)
, где cap(a)
— это емкость исходного массива или среза. Попытка использовать индексы за пределами этих границ приведёт к панике.🔸 Пустые срезы: если
low
и high
равны, срез будет пустым, но валидным. Например, a[2:2]
создаст пустой срез.🔸 Выход за границы: если
low
или high
выходят за границы допустимых значений, компилятор выдаст панику. Например, если len(a)
равно 5, то a[0:6]
вызовет панику, так как 6
превышает допустимую границу.🔸 Изменение исходного массива: срезы в Go являются ссылками на исходный массив. Это означает, что изменения в срезе отразятся на исходном массиве и на всех других срезах, сделанных из этого массива.
🔸
nil
и пустые срезы: срез, который не был инициализирован, имеет значение nil
. Он отличается от пустого среза, который был инициализирован, но не содержит элементов. nil
срез имеет длину и емкость 0, но пустой срез может иметь ненулевую емкость.🔸 Увеличение емкости среза: если при добавлении элементов в срез его емкость оказывается недостаточной, Go автоматически создаст новый массив с большей емкостью и скопирует в него элементы из исходного среза.