Sobes.tech
Junior — Middle

Kokios veiksmai yra leidžiami su dar ne inicializuota Map tipo kintamuoju?

sobes.tech AI

Atsakymas iš AI

Go kalboje, kintamasis map tipas pagal numatytuosius nustatymus turi reikšmę nil, jei jis nebuvo inicializuotas.

Su nil žemėlapiu leidžiamos šios operacijos:

  • Reikšmės skaitymas pagal raktą — grąžins nulines reikšmes tipo ir ženklelį, kad raktas neegzistuoja.
  • Patikrinimas ar raktas yra naudojant value, ok := map[key].

Nepalaikomos operacijos:

  • Rašymas (reikšmės priskyrimas raktui) sukels panic.
  • Funkcijų, kurios keičia žemėlapį (pvz., delete), kvietimas nil žemėlapyje yra saugus ir nesukels panic.

Pavyzdys:

var m map[string]int // m == nil

v, ok := m["key"] // ok == false, v == 0

// m["key"] = 10 // panic: priskyrimas `nil` žemėlapiui

delete(m, "key") // saugu, nieko nedaro

Kad naudotumėte žemėlapį rašymui, jį reikia inicializuoti, pvz., naudojant make:

m = make(map[string]int)
m["key"] = 10 // dabar veikia