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
По този начин капацитетът се увеличава динамично, за да управлява ефективно паметта при растежа на слайса.