Sobes.tech
Junior — Middle

Може ли да се извлече стойност от карта, която все още не е инициализирана?

sobes.tech AI

Отговор от AI

В Go, ако карта (map) не е инициализирана (т.е. равна на nil), опитът да извлечете стойност по ключ няма да предизвика паника, а просто ще върне нулевата стойност за типа на стойността и булев флаг false, който показва, че ключът липсва.

Пример:

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

value, ok := m["key"]
fmt.Println(value, ok) // Ще изведе: 0 false

Обаче, ако се опитате да запишете стойност в неинициализиран карта, ще възникне паника:

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

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

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