Sobes.tech
Senior

W której opcji konwersji typu jest możliwa panika i jaka konstrukcja pozwala jej uniknąć?

sobes.tech AI

Odpowiedź od AI

Panika może wystąpić podczas racji typu (type assertion), jeśli rzeczywisty typ wartości nie zgadza się z oczekiwanym. Na przykład:

var i interface{} = "łańcuch"
// Próba konwersji na int spowoduje panikę
n := i.(int) // panic: konwersja interfejsu: interface {} jest stringiem, a nie intem

Aby uniknąć paniki, używa się konstrukcji z dwoma wartościami zwrotnymi — druga wskazuje, czy konwersja się powiodła:

n, ok := i.(int)
if !ok {
    // obsługa błędu konwersji
}

W ten sposób, bezpieczna asercja typu zapobiega panice i pozwala poprawnie obsłużyć sytuację, gdy typy nie zgadzają się.