Sobes.tech
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.