Sobes.tech
Junior — Middle

Ile elementów i jaką pojemność będzie miała tablica po dodaniu jednego elementu, jeśli początkowo nie była zainicjalizowana?

sobes.tech AI

Odpowiedź od AI

Jeśli slice w Go początkowo nie jest zainicjalizowany (czyli jest równy nil), i dodajesz do niego element za pomocą funkcji append, to:

  • Liczba elementów (len) po dodaniu będzie wynosić 1.
  • Pojemność (cap) będzie zależeć od implementacji, ale zazwyczaj zaczyna się od małej pojemności, na przykład 1 lub 2.

Przykład:

var s []int // nil-slice
s = append(s, 10)
fmt.Println(len(s)) // 1
fmt.Println(cap(s)) // zazwyczaj >= 1

W ten sposób, przy dodaniu pierwszego elementu do nil-slice w Go, automatycznie przydzielana jest pamięć dla nowego slice’a z pojemnością wystarczającą do przechowania tego elementu.