golang fabonacci use select channel
func fabonacci(ch chan int64, done chan struct{}) {
var x int64 = 0
var y int64 = 1
for {
select {
case ch <- x:
x, y = y, x+y
case <-done:
fmt.Println("done")
return
}
}
}
func TestFabonacci(tt *testing.T) {
ch := make(chan int64)
done := make(chan struct{})
go func() {
for i := 0; i < 50; i++ {
fmt.Println(<-ch)
}
done <- struct{}{}
}()
fabonacci(ch, done)
}