Практика на горутины и каналы в Go
В этих задачах потренируем запуск и передачу значений.
Дан следующий код:
func hello() {
fmt.Println("hi")
}
Запустите hello отдельной веткой
и дождитесь печати перед выводом
"bye".
Дан следующий код:
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.
Дан следующий код:
done := make(chan struct{})
go func() {
fmt.Println("job")
}()
По окончании ветки завершите done,
в main дождитесь приема и
напечатайте "end".