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
appendiškvietimo metu skiriama atmintis. - Jei kalnas yra
nil, tadalen(s) == 0ircap(s) == 0.
Todėl naudojant append su nil kalnomis yra standartinė praktika Go, kuri supaprastina darbą su dinaminėmis kolekcijomis.