Sobes.tech
Junior — Middle

Quali azioni sono consentite quando si lavora con uno slice in Go se non è stato inizializzato esplicitamente?

sobes.tech AI

Risposta dell'AI

In Go, se uno slice non è stato esplicitamente inizializzato (cioè, ha il valore nil), è possibile eseguire le seguenti operazioni:

  • Verificare se è nil (ad esempio, if slice == nil), il che è utile per determinare se lo slice è stato inizializzato.
  • Ottenere la lunghezza e la capacità usando len(slice) e cap(slice). Per uno slice nil, lunghezza e capacità sono 0.
  • Usare l'operatore append per aggiungere elementi. Questo creerà automaticamente un nuovo slice con memoria allocata se lo slice originale è nil.

Tuttavia, non si può accedere agli elementi dello slice per indice se è nil o vuoto, poiché ciò provocherebbe un panic.

Esempio:

var s []int // s == nil
fmt.Println(s == nil) // true
fmt.Println(len(s))   // 0
s = append(s, 1)      // ora s è inizializzato e contiene [1]