Sobes.tech
Junior — Middle

Quali sono le conseguenze dell'utilizzo del metodo append per uno slice dichiarato senza parametri iniziali?

sobes.tech AI

Risposta dell'AI

Se una slice in Go viene dichiarata senza parametri iniziali, ad esempio var s []int, essa è inizialmente uguale a nil e non punta a un array allocato. Quando si utilizza la funzione append, Go assegna automaticamente un nuovo array e aggiunge gli elementi, restituendo una nuova slice con la capacità necessaria.

Ciò significa che append funziona in modo sicuro con slice nil, e puoi scrivere:

var s []int // slice nil
s = append(s, 1, 2, 3) // ora s punta a un nuovo array con gli elementi

Conseguenze:

  • Non è necessario inizializzare la slice prima di usare append.
  • Alla prima chiamata di append, viene allocata memoria.
  • Se la slice è nil, allora len(s) == 0 e cap(s) == 0.

Pertanto, usare append con slice nil è una pratica standard in Go che semplifica il lavoro con collezioni dinamiche.