Sobes.tech
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.