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