Junior — Middle
Каква е разликата между параметрите за дължина и капацитет на масив в програмирането?
sobes.tech AI
Отговор от AI
В Go масивите имат фиксирана дължина, която се задава при създаването им и не може да бъде променяна. Параметърът дължина (length) на масива е броят на елементите, които съдържа, и е фиксиран.
Капацитетът (capacity) е броят на елементите, които масив или срез (slice) може да съдържа без да се заделя допълнителна памет. За масивите капацитетът е равен на дължината, тъй като са фиксирани. За срезовете капацитетът може да бъде по-голям от дължината, тъй като те са динамични структури, които могат да се разширяват.
Пример:
arr := [5]int{1, 2, 3, 4, 5} // дължина и капацитет 5
slice := arr[1:3] // дължина на среза 2 (елементи с индекси 1 и 2)
// капацитет на среза 4 (от индекс 1 до края на масива)
fmt.Println(len(slice)) // 2
fmt.Println(cap(slice)) // 4
Така, дължината е текущият размер (броят на елементите), а капацитетът е максималният размер без преразпределение на паметта.