Sobes.tech
Junior — Middle

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

sobes.tech AI

Отговор от AI

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

  • Дължината на слайса ще стане 10 — броят на добавените елементи.
  • Капацитетът на слайса ще се увеличи автоматично, обикновено с резерв, за да се избегнат чести преразпределения на паметта. Точният капацитет зависи от реализацията, но често ще бъде 16 или повече, за да побере новите елементи и да има резерв за бъдещи добавки.

Пример:

var s []int // празен слайс
s = append(s, make([]int, 10)...) // добавяме 10 елемента
fmt.Println(len(s)) // 10
fmt.Println(cap(s)) // >=10, обикновено 16 или 20

По този начин капацитетът се увеличава динамично, за да управлява ефективно паметта при растежа на слайса.