Что такое len и cap в слайсах?

Junior
1.3k просмотров
AFK Offer AI

len — количество элементов в слайсе. cap — размер underlying array начиная с первого элемента слайса. При append если len < cap, элемент добавляется без аллокации. Если len == cap — создаётся новый массив.

s := make([]int, 3, 10)
fmt.Println(len(s)) // 3
fmt.Println(cap(s)) // 10

s = append(s, 42) // len=4, cap=10, без аллокации

При росте cap увеличивается примерно в 2 раза для маленьких слайсов и в ~1.25 раза для больших. Если знаешь размер заранее — передавай cap в make, чтобы избежать лишних аллокаций.

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

Что такое feature flag?