Sobes.tech
Junior — Middle

Колко елемента и каква ще бъде капацитетът на слайс след добавяне на един елемент, ако той първоначално не е бил инициализиран?

sobes.tech AI

Отговор от AI

Ако слайс в Go първоначално не е инициализиран (т.е. равен на nil), и добавите към него един елемент с помощта на функцията append, тогава:

  • Броят на елементите (len) след добавянето ще бъде 1.
  • Вместимостта (cap) ще зависи от реализацията, но обикновено започва с малка вместимост, например 1 или 2.

Пример:

var s []int // nil-слайс
s = append(s, 10)
fmt.Println(len(s)) // 1
fmt.Println(cap(s)) // обикновено >= 1

По този начин, при добавяне на първия елемент към nil-слайс в Go, Go автоматично заделя памет за нов слайс с достатъчна вместимост за съхранение на този елемент.