Treci la conținutul principal

Slice-uri în Go

Un slice seamănă mult cu un array, dar are mai multă putere și flexibilitate.

Și el păstrează mai multe valori de același tip într-o singură variabilă. Marea diferență este dimensiunea: un slice poate deveni mai lung sau mai scurt oricând ai nevoie, în timp ce un array nu poate.

Ai câteva opțiuni pentru a crea unul:

  • Scrii valorile direct, în forma []datatype{values}
  • Decupezi un slice dintr-un array existent
  • Apelezi funcția make()

Crearea unui slice cu []datatype{values}

Cel mai direct mod de a declara un slice este să îi enumeri valorile între acolade, așa cum arată sintaxa.

Două funcții predefinite îți dau informații despre orice slice. len() îi dă lungimea, adică numărul de elemente pe care le conține acum. cap() îi dă capacitatea, adică numărul de elemente pentru care are loc.

Exemplu

Ambele slice-uri de mai jos sunt scrise în această formă. Primul nu are valori, deci lungimea și capacitatea lui sunt 0; al doilea conține patru valori, deci ambele sunt 4:

Prompt
Creează două slice-uri folosind sintaxa literală: unul gol și unul cu valori de tip string. Afișează lungimea, capacitatea și valorile ambelor.
Ieșire: Program Go și ieșirea capturată

Sintaxă

main.go
slice_name := []datatype{values}

Crearea unui slice dintr-un array

O altă opțiune este să iei o parte dintr-un array, indicând o poziție de început și una de sfârșit între paranteze pătrate.

Exemplu

arr1[2:4] acoperă de la indexul 2 până la indexul 4, fără a-l include pe acesta. Capacitatea este 4, deoarece în array mai rămân patru elemente începând de la indexul 2:

Prompt
Creează un array de șase numere întregi, apoi creează un slice de la indexul 2 până la 4. Afișează slice-ul, lungimea și capacitatea acestuia.
Ieșire: Program Go și ieșirea capturată

Sintaxă

main.go
var myarray = [length]datatype{values} // An array
myslice := myarray[start:end]          // A slice made from the array

Crearea unui slice cu funcția make()

Apelarea funcției make() este un al treilea mod de a obține un slice și îți permite să alegi lungimea și capacitatea.

Notă: capacitatea este opțională. Dacă o omiți, primește aceeași valoare ca lungimea.

Exemplu

myslice1 primește lungimea 5 și capacitatea 10. myslice2 nu specifică o capacitate, așa că ajunge să aibă 5 pentru ambele:

Prompt
Creează slice-uri folosind funcția make(): unul cu lungime și capacitate, unul doar cu lungime. Afișează valorile, lungimea și capacitatea.
Ieșire: Program Go și ieșirea capturată

Sintaxă

main.go
slice_name := make([]type, length, capacity)