Senior
Mi az a slice és miben különbözik egy tömbtől?
sobes.tech MI
Válasz az MI-től
Go nyelvben egy tömb (array) egy fix méretű struktúra, amely ugyanazon típusú elemeket tartalmaz. A tömb méretét a deklaráció során határozzuk meg, és futás közben nem változtatható.
A szelet (slice) egy dinamikus, méretében változtatható tömbrész. Egy olyan struktúra, amely egy mutatót tartalmaz a tömbre, a hosszára és a kapacitására. A szeletek lehetővé teszik a tömb részhalmazain való munkát, és szükség esetén automatikusan bővülnek.
Fő különbségek:
- Méret: a tömb fix méretű, a szelet dinamikus.
- Átadás: a tömböket érték szerint (másolatként) adjuk át, a szeleteket hivatkozásként (mutató a tömbre).
- Rugalmasság: a szeletet a
appendfüggvénnyel lehet bővíteni, a tömb nem.
Példa:
var arr [3]int = [3]int{1, 2, 3} // fix méretű tömb
var s []int = arr[0:2] // szelet, amely egy részre hivatkozik a tömbből
s = append(s, 4) // a szelet bővül, szükség esetén új tömb jön létre