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:
Ieșire: Program Go și ieșirea capturată
package main
import ("fmt")
func main() {
myslice1 := []int{}
fmt.Println(len(myslice1))
fmt.Println(cap(myslice1))
fmt.Println(myslice1)
myslice2 := []string{"Slice-urile", "Go", "Sunt", "Puternice"}
fmt.Println(len(myslice2))
fmt.Println(cap(myslice2))
fmt.Println(myslice2)
}
Sintaxă
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:
Ieșire: Program Go și ieșirea capturată
package main
import ("fmt")
func main() {
arr1 := [6]int{10, 11, 12, 13, 14, 15}
myslice := arr1[2:4]
fmt.Printf("myslice = %v\n", myslice)
fmt.Printf("lungime = %d\n", len(myslice))
fmt.Printf("capacitate = %d\n", cap(myslice))
}
Sintaxă
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:
Ieșire: Program Go și ieșirea capturată
package main
import ("fmt")
func main() {
myslice1 := make([]int, 5, 10)
fmt.Printf("myslice1 = %v\n", myslice1)
fmt.Printf("lungime = %d\n", len(myslice1))
fmt.Printf("capacitate = %d\n", cap(myslice1))
// cu capacitatea omisă
myslice2 := make([]int, 5)
fmt.Printf("myslice2 = %v\n", myslice2)
fmt.Printf("lungime = %d\n", len(myslice2))
fmt.Printf("capacitate = %d\n", cap(myslice2))
}
Sintaxă
slice_name := make([]type, length, capacity)