Sobes.tech
Junior — Middle

Kokios pasekmės kyla naudojant append metodą slice'ui, kuris yra paskelbtas be pradinių parametrų?

sobes.tech AI

Atsakymas iš AI

Jei Go kalne yra deklaruota be pradinių parametrų, pavyzdžiui, var s []int, ji iš pradžių yra lygi nil ir nerodo į paskirtą masyvą. Naudojant funkciją append, Go automatiškai paskirs naują masyvą ir pridės elementus, grąžindamas naują kalną su reikiamu talpa.

Tai reiškia, kad append saugiai veikia su nil kalnomis, ir galite rašyti:

var s []int // nil kalnas
s = append(s, 1, 2, 3) // dabar s rodo į naują masyvą su elementais

Padariniai:

  • Nereikia inicializuoti kalno prieš naudojant append.
  • Pirmo append iškvietimo metu skiriama atmintis.
  • Jei kalnas yra nil, tada len(s) == 0 ir cap(s) == 0.

Todėl naudojant append su nil kalnomis yra standartinė praktika Go, kuri supaprastina darbą su dinaminėmis kolekcijomis.