Junior — Middle
Co się stanie z długością i pojemnością slice, jeśli dodamy do niego 10 elementów, gdy jest początkowo pusty?
sobes.tech AI
Odpowiedź od AI
Jeśli masz pusty slice w Go (długość i pojemność równe 0), i dodajesz do niego 10 elementów za pomocą funkcji append, to:
- Długość slice'a będzie równa 10 — liczbie dodanych elementów.
- Pojemność slice'a zostanie automatycznie zwiększona, zazwyczaj z zapasem, aby uniknąć częstych alokacji pamięci. Dokładna pojemność zależy od implementacji, ale często będzie to 16 lub więcej, aby pomieścić nowe elementy i mieć zapas na przyszłe dodania.
Przykład:
var s []int // pusty slice
s = append(s, make([]int, 10)...) // dodajemy 10 elementów
fmt.Println(len(s)) // 10
fmt.Println(cap(s)) // >=10, zazwyczaj 16 lub 20
W ten sposób pojemność jest dynamicznie zwiększana, aby efektywnie zarządzać pamięcią podczas wzrostu slice'a.