Фрагмент ничего не печатает. При первом чтении val будет 10, а второй результат true: закрытие не удаляет элемент буфера.
Какой вывод получит консоль при выполнении программы №53
Фрагмент ничего не печатает. При первом чтении 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 только отмечает использование переменных, а не выводит их значения.