Sobes.tech
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 append előtt.
  • Az első append híváskor memória foglalás történik.
  • Ha a szelet nil, akkor len(s) == 0 és cap(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.