Sobes.tech
Middle

Mi a különbség a slice és a tömb között?

sobes.tech MI

Válasz az MI-től

A Go nyelvben a szelet (slice) egy dinamikus, méret szerint változtatható "nézet" egy tömbre (array). A szelet és a tömb közötti fő különbségek:

  • Méret: egy tömbnek fix mérete van, amit a deklaráció során határozunk meg, például [5]int — egy 5 elemű tömb. A szelet viszont nem rendelkezik fix mérettel, és futás közben változhat.

  • Típus: egy tömb egy olyan típus, amelynek van egy meghatározott mérete, például [5]int és [10]int külön típusok. A szelet egy olyan struktúra, amely tartalmaz egy mutatót egy tömbre, egy hosszúságot és egy kapacitást.

  • Átadás függvényeknek: a tömböt érték szerint (másolatként) adjuk át, a szeletet pedig referencia szerint az alap tömbre.

Példa:

var arr [3]int = [3]int{1, 2, 3} // fix méretű tömb

slice := arr[0:2] // szelet, amely az első két elemre mutat

slice = append(slice, 4) // a szelet bővíthető, szükség esetén új tömb jön létre

Ezért a szelet egy rugalmasabb és kényelmesebb struktúra az elemek sorozatával való munkához, míg a tömböket kevésbé használják, és fix méretűek.