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.