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