Что выведет код Middle Каналы и select обновлено
Что выведет Go: неблокирующая отправка через select
Вопрос
Что выведет программа? Go 1.23, в go.mod указано go 1.23. Каждую строку вывода пишите с новой строки.
package main
import "fmt"
func main() {
ch := make(chan int, 1)
sent := 0
for i := 0; i < 3; i++ {
select {
case ch <- i:
sent++
default:
fmt.Println("пропуск", i)
}
}
fmt.Println(sent, <-ch)
}
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: пропуск 1, пропуск 2, 1 0. В буфер помещается один элемент: первая отправка (0) проходит.
Что выведет
пропуск 1
пропуск 2
1 0
Разбор
В буфер помещается один элемент: первая отправка (0) проходит. Дальше буфер полон, ветка отправки не готова, и выполняется default. В канале лежит 0.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.