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 // сега работи