Sobes.tech
Junior — Middle

Jakie są konsekwencje użycia metody append dla slice zadeklarowanego bez parametrów początkowych?

sobes.tech AI

Odpowiedź od AI

Jeśli slice w Go jest zadeklarowany bez parametrów początkowych, na przykład var s []int, to początkowo jest równy nil i nie wskazuje na zaalokowaną tablicę. Przy użyciu funkcji append, Go automatycznie zaalokuje nową tablicę i doda elementy, zwracając nowy slice z potrzebną pojemnością.

Oznacza to, że append działa bezpiecznie na nil-slice'ach, i możesz pisać:

var s []int // nil-slice
s = append(s, 1, 2, 3) // teraz s wskazuje na nową tablicę z elementami

Konsekwencje:

  • Nie ma potrzeby inicjalizacji slice przed użyciem append.
  • Przy pierwszym wywołaniu append następuje alokacja pamięci.
  • Jeśli slice jest nil, to len(s) == 0 i cap(s) == 0.

Dlatego używanie append z nil-slice'ami jest standardową praktyką w Go, która upraszcza pracę z dynamicznymi kolekcjami.