Junior — Middle
Mi történik, ha megpróbálsz hozzáadni egy elemet egy szelethez, amelynek hossza elérte a maximális kapacitását?
sobes.tech MI
Válasz az MI-től
Если попытаться добавить элемент в слайс в Go, у которого длина достигла максимальной вместимости (capacity), то происходит автоматическое выделение нового массива с увеличенной вместимостью. Содержимое старого массива копируется в новый, и ссылка слайса обновляется на этот новый массив. Таким образом, слайс расширяется динамически, и добавление элемента происходит успешно.
Пример:
s := make([]int, 3, 3) // длина и вместимость равны 3
s[0], s[1], s[2] = 1, 2, 3
s = append(s, 4) // вместимость увеличится, элемент добавится
fmt.Println(s) // [1 2 3 4]
Важно: этот процесс может быть затратным по времени и памяти, поэтому если заранее известен размер, лучше выделить достаточную вместимость.