Какой вывод получит программа №40

Сначала будет напечатан 0, затем возникнет panic: assignment to entry in nil map. Последний fmt.Println не выполнится.

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

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

Сначала будет напечатан 0, затем возникнет panic: assignment to entry in nil map. Последний fmt.Println не выполнится.

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

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

Условие

Определите, какой текст будет выведен в консоль после выполнения следующего кода на Go.

import (
        "fmt"
        )
func main(){
    var m map[string]int
            
    fmt.Println(m["foo"])
    
    m["foo"] = 42
    
    fmt.Println(m["foo"])        
}

Ответ

Сначала будет напечатан 0, затем возникнет panic: assignment to entry in nil map. Последний fmt.Println не выполнится.

Чтение отсутствующего ключа у nil-map разрешено и возвращает нулевое значение int. Запись требует инициализации: m := make(map[string]int) либо литерал map. После такой инициализации программа выведет 0 и 42. Проверка nil нужна именно для записи, а не для обычного чтения.

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

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

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

Подробнее