推荐好文章:
Channel的两个小练习
package main
import "fmt"
func main() {
ch := make(chan int)
quit := make(chan bool)
go shower(ch, quit)
for i := 0; i<10; i++ {
ch <- i
}
quit <- false
}
func shower(c chan int, quit chan bool) {
for {
select {
case j:= <-c:
fmt.Printf("%d\n", j)
case <-quit:
break
}
}
}
package main
import "fmt"
func main(){
x := fib()
for i:= 0; i< 10; i++ {
fmt.Println(<-x)
}
}
func fib() <-chan int {
x := make(chan int, 2)
a,b,out := dup3(x)
go func() {
x <- 0
x <- 1
<-a
for {
x<-<-a+<-b
}
}()
return out
}
func dup3(in <- chan int) (<-chan int, <-chan int, <-chan int) {
a,b,c := make(chan int, 2),make(chan int,2),make(chan int,2)
go func() {
for {
x:=<-in
a <- x
b <- x
c <- x
}
}()
return a,b,c
}