Sobes.tech
Junior — Middle

Какви действия са допустими с променлива от тип Map, която все още не е инициализирана?

sobes.tech AI

Отговор от AI

В Go променливата от тип map по подразбиране има стойност nil, ако не е инициализирана.

С nil карта са допустими следните действия:

  • Четене на стойност по ключ — ще върне нулевата стойност на типа и флаг за липса на ключ.
  • Проверка за наличие на ключ с value, ok := map[key].

Недопустими операции:

  • Запис (присвояване на стойност по ключ) ще предизвика panic.
  • Вика на функции, които променят картата (например delete), върху nil карта е безопасно и не предизвиква panic.

Пример:

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

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

// m["key"] = 10 // panic: присвояване в nil карта

delete(m, "key") // безопасно, нищо не прави

За да използвате карта за запис, трябва да я инициализирате, например с make:

m = make(map[string]int)
m["key"] = 10 // сега работи