Junior — Middle
Ar galima išgauti reikšmę iš žemėlapio, kuris dar nebuvo inicializuotas?
sobes.tech AI
Atsakymas iš AI
Go kalboje, jei žemėlapis (map) nebuvo inicializuotas (t.y., lygus nil), bandymas išgauti reikšmę pagal raktą nesukels panikos, o tiesiog grąžins nulines reikšmes reikšmės tipui ir boolean žymeklį false, nurodantį, kad raktas neegzistuoja.
Pavyzdys:
var m map[string]int // m == nil
value, ok := m["key"]
fmt.Println(value, ok) // Išves: 0 false
Tačiau, jei bandysite įrašyti reikšmę į neinicijuotą žemėlapį, įvyks panika:
m["key"] = 10 // panika: įrašymas į nil žemėlapį
Todėl, norint saugiai naudoti žemėlapį, jį reikia inicializuoti, pavyzdžiui, naudojant make:
m = make(map[string]int)
m["key"] = 10 // dabar veikia teisingai