Junior — Middle
В кои ситуации в езика за програмиране се случва автоматично увеличаване на размера на динамичен масив (slice)?
sobes.tech AI
Отговор от AI
В Go слайсът е структура, която съдържа указател към масив, дължина и капацитет. Размерът на слайса се увеличава автоматично, когато добавяте елементи с функцията append, и текущата дължина на слайса достига неговия капацитет.
В този момент се заделя нов масив с увеличен капацитет (обикновено два пъти по-голям от предишния), старите елементи се копират в новия масив и указателят на слайса се актуализира към този нов масив. Това позволява на слайса да расте динамично с добавянето на елементи.
Пример:
s := make([]int, 0, 2) // дължина 0, капацитет 2
s = append(s, 1) // дължина 1, капацитет 2
s = append(s, 2) // дължина 2, капацитет 2
s = append(s, 3) // дължина 3, капацитет увеличен, например, до 4
По този начин размерът се увеличава автоматично при добавяне на елементи, когато дължината достигне капацитета на слайса.