Sobes.tech
Junior — Middle

Cum se creează și se inițializează corect slice-urile în Go?

sobes.tech AI

Răspuns de la AI

În Go, slice-urile sunt structuri de date dinamice care reprezintă o referință la un array cu o lungime și o capacitate specificate.

Slice-urile pot fi create și inițializate în mai multe moduri:

  1. Declarație de slice fără inițializare (slice nul):
var s []int // slice nul, lungime și capacitate 0
  1. Inițializare de slice folosind un literal:
s := []int{1, 2, 3} // slice cu lungimea 3
  1. Crearea unui slice folosind funcția make:
s := make([]int, 5) // slice cu lungimea 5, umplut cu zero
s2 := make([]int, 3, 10) // lungimea 3, capacitatea 10

Funcția make alocă în fundal un array și returnează un slice care indică către acesta.

  1. Crearea unui slice dintr-un array:
arr := [5]int{1, 2, 3, 4, 5}
s := arr[1:4] // slice al elementelor cu indicii 1,2,3

Este important să rețineți că slice-urile sunt referințe la array-uri, deci modificarea elementelor din slice modifică și array-ul original.

Exemplu de utilizare:

package main
import "fmt"

func main() {
    s := make([]int, 3, 5)
    fmt.Println(s)       // [0 0 0]
    fmt.Println(len(s))  // 3
    fmt.Println(cap(s))  // 5

    s = append(s, 4, 5)
    fmt.Println(s)       // [0 0 0 4 5]
    fmt.Println(len(s))  // 5
    fmt.Println(cap(s))  // 5
}

Această abordare permite lucrul eficient cu array-uri dinamice în Go.