Практика на каналы в Go
Дан следующий код:
ch := make(chan int)
Запустите ветку, которая примет одно
число и выведет его; в main
отправьте 15.
Дан следующий код:
ch := make(chan string, 2)
ch <- "one"
ch <- "two"
Выведите обе строки двумя приемами в том порядке, как они лежат в буфере.
Дан следующий код:
ch := make(chan int)
go func() {
ch <- 4
ch <- 8
}()
Завершите канал со стороны отправителя после двух чисел и выведите все значения циклом по каналу.
Дан следующий код:
ready := make(chan int, 1)
wait := make(chan int)
ready <- 1
С помощью конструкции с двумя ветками
приема выведите число из ready,
не блокируясь на wait.
Дан следующий код:
func fill(ch chan<- int) {
ch <- 11
}
func read(ch <-chan int) {
fmt.Println(<-ch)
}
В main свяжите канал, запустите
fill в ветке и вызовите read.
Дан следующий код:
done := make(chan struct{})
go func() {
fmt.Println("job")
}()
По окончании ветки завершите done,
в main дождитесь приема и
напечатайте "end".