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]intkü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.