Sobes.tech
Senior

In quale opzione di conversione di tipo è possibile il panico e quale costruzione permette di evitarlo?

sobes.tech AI

Risposta dell'AI

Il panico può verificarsi durante l'asserzione di tipo (type assertion) se il tipo reale del valore non corrisponde a quello atteso. Ad esempio:

var i interface{} = "stringa"
// Tentare di convertire in int causerà un panico
n := i.(int) // panic: conversione di interfaccia: interface {} è stringa, non int

Per evitare il panico, si utilizza una costruzione con due valori di ritorno — il secondo indica se la conversione ha avuto successo:

n, ok := i.(int)
if !ok {
    // gestione dell'errore di conversione
}

In questo modo, l'asserzione di tipo sicura evita il panico e permette di gestire correttamente la situazione quando i tipi non corrispondono.