Junior — Middle
Milyen következményekkel jár az append módszer használata egy olyan szelet esetében, amelyet kezdő paraméterek nélkül deklaráltak?
sobes.tech MI
Válasz az MI-től
Ha egy szelet (slice) Go-ban kezdőértékek nélkül van deklarálva, például var s []int, akkor kezdetben nil értékű, és nem mutat egy allokált tömbre. A append függvény használatakor a Go automatikusan új tömböt foglal, és hozzáadja az elemeket, visszaadva egy új szeletet a szükséges kapacitással.
Ez azt jelenti, hogy a append biztonságosan működik nil szeletekkel, és így írhatod:
var s []int // nil szelet
s = append(s, 1, 2, 3) // most s egy új tömbre mutat az elemekkel
Következmények:
- Nincs szükség a szelet inicializálására
appendelőtt. - Az első
appendhíváskor memória foglalás történik. - Ha a szelet nil, akkor
len(s) == 0éscap(s) == 0.
Ezért a append nil szeletekkel való használata egy szokásos gyakorlat Go-ban, amely megkönnyíti a dinamikus kollekciókkal való munkát.