Sobes.tech
Back to questions
Junior — Middle
83

Можно ли извлечь значение из карты, которая ещё не была инициализирована?

Companies where asked
Эрливидео
Самокат Тех

Answer from AI

sobes.tech 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 // panic: assignment to entry in nil map

Поэтому для безопасного использования карты её нужно инициализировать, например, с помощью make:

m = make(map[string]int)
m["key"] = 10 // теперь работает корректно