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.