Какой вывод получит консоль при выполнении программы №53

Фрагмент ничего не печатает. При первом чтении val будет 10, а второй результат true: закрытие не удаляет элемент буфера.

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

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

Фрагмент ничего не печатает. При первом чтении val будет 10, а второй результат true: закрытие не удаляет элемент буфера.

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

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

Условие

Определите, какой текст появится в консоли после запуска следующего фрагмента кода:

ch :=make(chan int, 1)
    ch <- 10
    close(ch)
    val,e = <-ch

    _,_=val,e

Ответ

Фрагмент ничего не печатает. При первом чтении val будет 10, а второй результат true: закрытие не удаляет элемент буфера.

Если val и e ранее не объявлены, нужно val, e := <-ch, иначе присваивание не компилируется. Переменная e здесь bool, а не error.

После первой операции буфер опустеет. Следующее чтение вернёт 0 и false, поскольку канал уже закрыт. Чтение закрытого канала не вызывает panic; отправка в него вызывает. Строка _, _ = val, e только отмечает использование переменных, а не выводит их значения.

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

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

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

Подробнее