Sobes.tech
Junior — Middle

La quantità di memoria disponibile o la capacità cambia quando si riduce la dimensione di una slice in un linguaggio di programmazione?

sobes.tech AI

Risposta dell'AI

Nel linguaggio Go, uno slice è una struttura che contiene un puntatore a un array, una lunghezza e una capacità.

Riducendo la lunghezza di uno slice (ad esempio, usando slice = slice[:newLength]), viene modificata solo la lunghezza — il numero di elementi disponibili per lettura e scrittura. La capacità e la memoria allocata rimangono le stesse, poiché lo slice fa ancora riferimento allo stesso array.

Se si desidera ridurre la capacità e liberare memoria, è necessario creare un nuovo slice e copiarvi gli elementi necessari, ad esempio:

oldSlice := []int{1, 2, 3, 4, 5}
newSlice := make([]int, 3)
copy(newSlice, oldSlice[:3])

In questo modo, ridurre la lunghezza dello slice non modifica la capacità e la memoria allocata, quindi la memoria non viene liberata automaticamente.