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)ecap(slice). Per uno slicenil, lunghezza e capacità sono 0. - Usare l'operatore
appendper 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]