Размер слайса может увеличиваться по-разному в зависимости от текущей вместимости cap(slice):
- Если недостаточно вместимости: Новая вместимость будет как минимум в 2 раза больше текущей вместимости, если текущая вместимость меньше 1024. Если больше 1024, новая вместимость будет увеличиваться на 25% от текущей вместимости, пока не станет достаточной. Затем она может быть выровнена вверх.
- Если достаточно вместимости: Размер слайса увеличивается ровно на количество добавленных элементов, а вместимость не меняется.
go
Конкретный алгоритм роста вместимости находится внутри runtime и может меняться между версиями Go. Однако общие правила (удвоение до 1024, увеличение на ~25% после) сохраняются.