Back to questions
Senior
7
Что происходит когда capacity слайса исчерпана и добавляется ещё элемент?
Companies where asked
I-teco
Answer from AI
sobes.tech AI
Когда capacity слайса исчерпана и добавляется новый элемент через append, происходит следующее:
-
Создаётся новый массив с увеличенной capacity. Обычно capacity увеличивается примерно в 2 раза, но точный алгоритм зависит от реализации и размера слайса.
-
Содержимое старого массива копируется в новый.
-
Новый элемент добавляется в новый массив.
-
Слайс начинает ссылаться на новый массив с обновлённой длиной и capacity.
Это означает, что операция append при исчерпании capacity приводит к выделению новой памяти и копированию данных, что может быть дорогостоящей. Поэтому, если заранее известен размер, лучше создавать слайс с нужной capacity через make.
Пример:
s := make([]int, 0, 2) // capacity 2
s = append(s, 1, 2) // теперь длина 2, capacity 2
s = append(s, 3) // capacity исчерпана, создаётся новый массив с capacity 4