Treci la conținutul principal

Accesarea elementelor unui slice

Citirea unei valori dintr-un slice se face prin index: pune numărul poziției între paranteze pătrate.

Pozițiile se numără de la 0, deci [0] este primul element și [1] al doilea, continuând la fel prin tot slice-ul.

Exemplu

Afișarea indexurilor 0 și 2 arată prima și a treia valoare din prices:

Prompt
Creează un slice de numere întregi. Accesează primul și al treilea element după index.
Ieșire: program Go și ieșirea capturată

Modificarea elementelor unui slice

Atribuirea la un index suprascrie valoarea stocată acolo.

Exemplu

A treia valoare din prices se schimbă din 30 în 50:

Prompt
Creează un slice de numere întregi. Modifică al treilea element, apoi afișează primul și al treilea.
Ieșire: program Go și ieșirea capturată

Adăugarea elementelor la un slice

Funcția append() adaugă valori noi după ultimul element. Atribuie rezultatul înapoi slice-ului, așa cum arată sintaxa:

Exemplu

Două valori noi, 20 și 21, se adaugă la sfârșitul lui myslice1. Lungimea lui crește de la 6 la 8, iar capacitatea crește pentru a face loc:

Prompt
Creează un slice de șase numere întregi. Adaugă încă două elemente. Afișează valorile, lungimea și capacitatea înainte și după.
Ieșire: program Go și ieșirea capturată

Sintaxă

main.go
slice_name = append(slice_name, element1, element2, ...)

Adăugarea unui slice la alt slice

append() poate adăuga și un slice întreg la sfârșitul altuia, așa cum arată sintaxa.

Notă: Cele trei puncte de după slice2 sunt obligatorii. Ele îi spun lui Go să transmită elementele slice-ului unul câte unul.

Exemplu

Valorile din myslice2 vin după cele din myslice1, iar rezultatul combinat ajunge în myslice3:

Prompt
Creează două slice-uri și adaugă-l pe unul la celălalt. Afișează rezultatul, lungimea și capacitatea.
Ieșire: program Go și ieșirea capturată

Sintaxă

main.go
slice3 = append(slice1, slice2...)

Modificarea lungimii unui slice

Lungimea unui array este fixă, dar lungimea unui slice se poate schimba.

Exemplu

myslice1 acoperă la început patru elemente din arr1, apoi este secționat din nou până la două. Adăugarea a patru valori îl aduce la șase, ceea ce depășește capacitatea lui de 5, așa că și capacitatea crește:

Prompt
Creează un array, fă un slice din el, re-slice-uiește pentru a schimba lungimea, apoi adaugă elemente pentru a schimba lungimea din nou. Afișează valorile, lungimea și capacitatea de fiecare dată.
Ieșire: program Go și ieșirea capturată

Eficiența memoriei

Un slice păstrează în memorie întregul array de bază, chiar dacă folosești doar o mică parte din el.

Așadar, când array-ul este mare și ai nevoie doar de câteva dintre elementele lui, varianta mai bună este să le copiezi cu funcția copy().

Copiază-le într-un slice nou, iar acel slice primește propriul array de bază, care conține doar ce îți trebuie. Astfel programul tău folosește mai puțină memorie.

Exemplu

numbers conține 15 valori, dar sunt necesare doar primele 5. Ele sunt copiate în numbersCopy, creat cu make(), care are o lungime și o capacitate de doar 5:

Prompt
Creează un slice mare, ia un sub-slice și copiază-l într-un slice nou folosind copy(). Afișează atât originalul, cât și copia, împreună cu lungimea și capacitatea.
Ieșire: program Go și ieșirea capturată

Sintaxă

copy() primește două slice-uri, o destinație dest și o sursă src, și copiază datele din sursă în destinație. Valoarea returnată îți spune câte elemente au fost copiate.

main.go
copy(dest, src)