Sobes.tech
Junior — Middle

Aké akcie sú povolené s premennou typu Map, ktorá ešte nebola inicializovaná?

sobes.tech AI

Odpoveď od AI

V jazyku Go má premenná typu map predvolenú hodnotu nil, ak nebola inicializovaná.

S nil mapou sú povolené nasledovné operácie:

  • Čítanie hodnoty podľa kľúča — vráti nulovú hodnotu typu a príznak, že kľúč neexistuje.
  • Kontrola existencie kľúča pomocou value, ok := map[key].

Nepovolené operácie:

  • Zápis (priradenie hodnoty ku kľúču) spôsobí panic.
  • Volanie funkcií, ktoré menia mapu (napríklad delete), na nil mape je bezpečné a nespôsobí panic.

Príklad:

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

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

// m["key"] = 10 // panic: priradenie do nil mapy

delete(m, "key") // bezpečné, neurobí nič

Na použitie mapy na zápis je potrebné ju inicializovať, napríklad pomocou make:

m = make(map[string]int)
m["key"] = 10 // teraz funguje