Senior
Care este diferența dintre un array și un slice în Go?
sobes.tech AI
Răspuns de la AI
În Go, un array este o structură de dimensiune fixă, al cărei mărime este stabilită la declarație și nu poate fi modificată. Arrays stochează elementele consecutiv în memorie și, la transmiterea către o funcție, sunt copiate în întregime.
Un slice este un tip dinamic, modificabil ca dimensiune, care reprezintă o referință la o secțiune secvențială a unui array. Un slice conține un pointer către primul element, lungimea și capacitatea.
Diferențe cheie:
- Dimensiunea array-ului este fixă, cea a slice-ului este dinamică.
- La transmitere, un array este copiat, în timp ce un slice este transmis ca referință la array-ul subiacente.
- Un slice poate fi extins (append), un array nu.
Exemplu:
var arr [3]int = [3]int{1, 2, 3} // array de dimensiune fixă
slice := arr[0:2] // slice referindu-se la primii doi elemente ai array-ului
slice = append(slice, 4) // slice-ul se extinde, posibil creându-se un nou array subiacente
Astfel, slice-urile sunt utile pentru lucrul cu colecții dinamice, în timp ce array-urile sunt potrivite pentru seturi de date fixe.