Что выведет код Junior Слайсы и мапы изнутри обновлено

Что выведет Go: чтение отсутствующего ключа map

Вопрос

Что выведет программа? Go 1.23, в go.mod указано go 1.23.

package main

import "fmt"

func main() {
    m := map[string]int{"a": 1}
    v := m["b"]
    _, ok := m["b"]
    m["c"]++
    fmt.Println(v, ok, m["c"], len(m))
}

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: 0 false 1 2. Отсутствующий ключ даёт нулевое значение, ok равен false. m["c"]++ читает 0, прибавляет 1 и записывает, поэтому в мапе появляется ключ "c".

Что выведет

0 false 1 2

Разбор

Отсутствующий ключ даёт нулевое значение, ok равен false. m["c"]++ читает 0, прибавляет 1 и записывает, поэтому в мапе появляется ключ "c". Итого два ключа.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.