Что происходит при append когда capacity не хватает?

Middle
1.1k просмотров
AFK Offer AI

Когда len == cap и делаешь append, Go аллоцирует новый массив большего размера, копирует туда старые данные и возвращает слайс с новым указателем. Стратегия роста: до 256 элементов — удваивается, после — растёт примерно на 25% (с Go 1.18 алгоритм сглажен). Именно поэтому результат append надо присваивать обратно: s = append(s, x). Если знаешь размер заранее — make([]T, 0, n) сразу выделит нужную ёмкость и избежит перевыделений.

Следующий вопрос

Что такое middleware?