Что покажет вывод программы №48

Программа выведет 1 и 1 на отдельных строках. Обе map инициализированы и пригодны для записи; подсказка размера 10 не создаёт десять готовых элементов.

Короткий ответ

Что ответить на собеседовании

Программа выведет 1 и 1 на отдельных строках. Обе map инициализированы и пригодны для записи; подсказка размера 10 не создаёт десять готовых элементов.

Подробный разбор

Ответ с пояснениями

Условие

Какой результат будет напечатан при запуске следующего кода?

func main() {
    a := map[string]int{}
    b := make(map[string]int, 10)

    a["test"]++
    b["test"]++

    fmt.Println(a["test"])
    fmt.Println(b["test"])
}

Ответ

Программа выведет 1 и 1 на отдельных строках. Обе map инициализированы и пригодны для записи; подсказка размера 10 не создаёт десять готовых элементов.

Для отсутствующего ключа map[string]int чтение возвращает 0. Операция a["test"]++ читает этот ноль и записывает единицу; то же происходит с b. Размер в make — подсказка для выделения памяти, не длина и не максимальное число элементов. В отличие от этих map, запись в nil-map вызвала бы panic.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее