package main import ( "fmt" ) func fibonacci(c, quit chan int) { x, y := 0, 1 for { // Пишет в канал пока не поямает quit select { case c <- x: fmt.Println("write to channel") x, y = y, x+y case <-quit: fmt.Println("quit") return } } } func main() { c := make(chan int) quit := make(chan int) // пытается 10 раз считать из канала go func() { for i := 0; i < 10; i++ { fmt.Println("Want to read from channel `c`") fmt.Println(<-c) } quit <- 0 }() fmt.Println("Call fibonacci") fibonacci(c, quit) }