Sobes.tech
Senior

Kādā tipa pārvēršanas variantā ir iespējama panika un kura konstrukcija to ļauj izvairīties?

sobes.tech AI

Atbilde no AI

Tipa apstiprināšana (type assertion) laikā, ja faktiskā vērtības tips neatbilst gaidītajam, var rasties panika. Piemēram:

var i interface{} = "rinda"
// Mēģinājums pārvērst uz int izraisīs paniku
n := i.(int) // panika: saskares konvertācija: interface {} ir string, nevis int

Lai izvairītos no panikas, tiek izmantota konstrukcija ar divām atgrieztajām vērtībām — otra norāda, vai konvertācija bija veiksmīga:

n, ok := i.(int)
if !ok {
    // konvertācijas kļūdas apstrāde
}

Tādējādi, droša tipa apgalvojuma forma novērš paniku un ļauj pareizi pārvaldīt situāciju, kad tipi nesakrīt.