| 12345678910111213141516171819202122232425262728293031323334353637 |
- 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)
- }
|