Sobes.tech
Junior — Middle

È possibile eseguire un'operazione di lettura dei dati da una slice che non è stata inizializzata in precedenza?

sobes.tech AI

Risposta dell'AI

In Go, gli slice sono strutture che contengono un puntatore a un array, una lunghezza e una capacità. Se uno slice non è stato inizializzato (cioè, è uguale a nil), tentare di leggerlo provocherà un panic.

Ad esempio:

var s []int // slice nil
fmt.Println(s[0]) // panic: errore di runtime: indice fuori dal intervallo

Per leggere in modo sicuro da uno slice, deve essere inizializzato, ad esempio usando make o assegnandogli un array esistente:

s := make([]int, 3)
fmt.Println(s[0]) // 0, sicuro

Pertanto, non è possibile leggere da uno slice non inizializzato — ciò causerà un errore di runtime.