TGViewer
Библиотека Go для собеса | вопросы с собеседований Библиотека Go для собеса | вопросы с собеседований @go_interview_lib · 7.47K subscribers
Post #1445 1.26K
Как отличить отсутствующий ключ от нулевого значения в мапе

Через второй возвращаемый параметр при обращении к мапе — так называемый comma-ok. Обычное чтение v := m[key] всегда вернёт значение: если ключа нет, это будет нулевое значение типа (0 для чисел, "" для строк, nil для указателей).

А значит, по одному только v нельзя понять, лежал ли там реальный ноль или ключа просто не было:
m := map[string]int{"a": 0}

v := m["a"] // 0 — но ключ есть
v = m["b"] // 0 — а ключа нет


Форма с двумя переменными решает это: второе значение — булев флаг, который равен true, только если ключ действительно присутствует в мапе. Именно на него и нужно смотреть, а не на само значение:
v, ok := m["a"]
if ok {
// ключ есть, v — реальное значение (даже если это 0)
}

_, ok = m["b"] // ok == false, ключа нет


Отсюда типичный идиоматичный паттерн — проверка и использование в одном if:
if v, ok := m[key]; ok {
// работаем с v
}


🐸 Библиотека Go для собеса
  • ❤ 1
More from @go_interview_lib
  1. Sep 18, 2026А вы уже забрали свой подарок ко Дню программиста? К вашему профессиональному празднику Tp…
  2. Sep 15, 2026❓ Какой максимальный размер бинарного файла можно собрать В Go нет встроенного ограничения…
  3. Sep 15, 2026😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как трати…
  4. Aug 4, 2026❓ Объясните разницу между безопасным доступом к байтам строки через срез и использованием…
  5. Aug 4, 2026Покупать новый курс каждый раз, когда меняется рабочая задача, — довольно странная механик…
  6. Aug 4, 2026👅 Самое сложное — выбрать не курс, а направление Сегодня хочется разобраться в AI-агентах…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →