Сначала будет напечатан 0, затем возникнет panic: assignment to entry in nil map. Последний fmt.Println не выполнится.
Какой вывод получит программа №40
Сначала будет напечатан 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 нужна именно для записи, а не для обычного чтения.