Sobes.tech
Junior — Middle

Quanti elementi e quale capacità avrà una slice dopo aver aggiunto un elemento, se inizialmente non è stata inizializzata?

sobes.tech AI

Risposta dell'AI

Se una slice in Go non è inizializzata inizialmente (cioè, è uguale a nil), e si aggiunge un elemento usando la funzione append, allora:

  • La quantità di elementi (len) dopo l’aggiunta sarà 1.
  • La capacità (cap) dipenderà dall’implementazione, ma di solito inizia con una capacità piccola, ad esempio 1 o 2.

Esempio:

var s []int // slice nil
s = append(s, 10)
fmt.Println(len(s)) // 1
fmt.Println(cap(s)) // di solito >= 1

Pertanto, quando si aggiunge il primo elemento a uno slice nil in Go, viene automaticamente allocata memoria per un nuovo slice con una capacità sufficiente a contenere quell’elemento.