Sobes.tech
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.