Программа выведет 1 и 1 на отдельных строках. Обе map инициализированы и пригодны для записи; подсказка размера 10 не создаёт десять готовых элементов.
Что покажет вывод программы №48
Программа выведет 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.