Sobes.tech
Junior — Middle

Jaké akce jsou povolené s proměnnou typu Map, která ještě nebyla inicializována?

sobes.tech AI

Odpověď od AI

V jazyce Go má proměnná typu map výchozí hodnotu nil, pokud nebyla inicializována.

S nil mapou jsou povolené následující operace:

  • Čtení hodnoty podle klíče — vrátí nulovou hodnotu typu a příznak, že klíč neexistuje.
  • Kontrola existence klíče pomocí value, ok := map[key].

Nepovolené operace:

  • Zápis (přiřazení hodnoty ke klíči) způsobí panic.
  • Volání funkcí, které mění mapu (například delete), na nil mapě je bezpečné a nezpůsobí panic.

Příklad:

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

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

// m["key"] = 10 // panic: přiřazení do nil mapy

delete(m, "key") // bezpečné, nedělá nic

Pro použití mapy pro zápis je nutné ji inicializovat, například pomocí make:

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