Sobes.tech
Junior — Middle

Koje posledice nastaju pri korišćenju metode append za slice deklarisan bez početnih parametara?

sobes.tech АИ

Одговор од АИ

Ako je slice u Go deklarisan bez početnih parametara, na primer var s []int, on je inicijalno jednak nil i ne pokazuje na dodeljeni niz. Prilikom korišćenja funkcije append, Go automatski dodeljuje novi niz i dodaje elemente, vraćajući novi slice sa potrebnom kapacitetom.

To znači da append sigurno radi sa nil-slice-ima, i možete pisati:

var s []int // nil-slice
s = append(s, 1, 2, 3) // sada s pokazuje na novi niz sa elementima

Posledice:

  • Nije potrebno inicijalizovati slice pre korišćenja append.
  • Pri prvom pozivu append, dodeljuje se memorija.
  • Ako je slice nil, onda je len(s) == 0 i cap(s) == 0.

Stoga je korišćenje append sa nil-slice-ima standardna praksa u Go, koja olakšava rad sa dinamičkim kolekcijama.