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
appendnastępuje alokacja pamięci. - Jeśli slice jest nil, to
len(s) == 0icap(s) == 0.
Dlatego używanie append z nil-slice'ami jest standardową praktyką w Go, która upraszcza pracę z dynamicznymi kolekcjami.