Come viene aumentata la dimensione di uno slice nel linguaggio Go?
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à. Quando si aggiungono elementi con la funzione append, se la lunghezza dello slice raggiunge la sua capacità, questa viene aumentata.
Il meccanismo di aumento della dimensione dello slice non è fisso, ma generalmente Go raddoppia la capacità (la moltiplica per 2) per minimizzare il numero di allocazioni e copie. Viene creato un nuovo array con una capacità aumentata, in cui vengono copiati i vecchi dati, e il puntatore dello slice viene aggiornato.
Esempio:
s := make([]int, 0, 2) // lunghezza 0, capacità 2
s = append(s, 1, 2) // ora lunghezza 2, capacità 2
s = append(s, 3) // la capacità aumenterà, ad esempio, a 4
In questo modo, l'aumento della dimensione dello slice avviene automaticamente quando si aggiungono elementi, quando la capacità corrente si esaurisce.