🔴 Сложный · 3 очк. Массивы и слайсы
По какой формуле растёт capacity слайса при append в Go 1.21+?
A Всегда удваивается
B Удваивается до 256, затем рост ~25%
C Растёт на 50%
D Утраивается
Объяснение вопроса

С Go 1.18 формула роста плавная: до 256 элементов capacity удваивается, затем newcap += (newcap + 3*256) / 4, то есть рост примерно с 2x переходит к ~1.25x. Точный cap может немного отличаться из-за выравнивания в аллокаторе.

var s []int
for i := 0; i < 1000; i++ {
    s = append(s, i)
}
// cap будет расти: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 848, ...

Раньше (до 1.18): удвоение до 1024 элементов, затем +25%. Новая формула уменьшает избыточное потребление памяти на больших слайсах.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.