Sobes.tech
Junior — Middle

Perché è importante considerare la capacità dei slice quando si lavora con array in Go?

sobes.tech AI

Risposta dell'AI

In Go, gli slice sono strutture dinamiche che contengono un puntatore a un array, una lunghezza e una capacità. La capacità dello slice determina quanti elementi può contenere senza allocare nuova memoria.

È importante considerare la capacità perché:

  • Quando si aggiungono elementi con append, se la lunghezza dello slice supera la capacità, viene allocato un nuovo array con capacità aumentata e i dati vengono copiati, influenzando le prestazioni.
  • Conoscere la capacità permette di gestire efficacemente la memoria ed evitare allocazioni inutili.

Esempio:

s := make([]int, 0, 5) // lunghezza 0, capacità 5
fmt.Println(len(s), cap(s)) // 0 5

s = append(s, 1, 2, 3, 4, 5)
fmt.Println(len(s), cap(s)) // 5 5

s = append(s, 6) // capacità superata, viene allocato un nuovo array
fmt.Println(len(s), cap(s)) // 6 10 (circa)

In questo modo, controllando la capacità, si può ottimizzare il lavoro con gli slice.