Senior
Kuriame tipo konvertavimo variante įmanoma panika ir kokia konstrukcija ją leidžia išvengti?
sobes.tech AI
Atsakymas iš AI
Tipas patvirtinimas (type assertion) metu, jei tikrasis reiksmes tipas nesutampa su laukiamu, gali įvykti panika. Pavyzdžiui:
var i interface{} = "eilutė"
// Bandymas konvertuoti į int sukels paniką
n := i.(int) // panika: sąsajos konvertavimas: interface {} yra string, ne int
Norint išvengti panikos, naudojama konstrukcija su dviem grąžinamomis reikšmėmis — antra rodo, ar konvertavimas pavyko:
n, ok := i.(int)
if !ok {
// klaidos apdorojimas konvertuojant
}
Taip, saugi tipų patvirtinimo forma, išvengia panikos ir leidžia tinkamai valdyti situaciją, kai tipai nesutampa.