分享
GO chan 编程
痞子汤 · · 1399 次点击 · · 开始浏览这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
package main
import (
"fmt"
"math/rand"
"sync"
)
func main() {
numberChan1 := make(chan int64, 3)
numberChan2 := make(chan int64, 3)
numberChan3 := make(chan int64, 3)
var waitGroup sync.WaitGroup
waitGroup.Add(3)
go func() {
for n := range numberChan1 {
if n%2 == 0 {
numberChan2 <- n
} else {
fmt.Printf("Filter %d. [filter 2]\n", n)
}
}
close(numberChan2)
waitGroup.Done()
}()
go func() {
for n := range numberChan2 {
if n%5 == 0 {
numberChan3 <- n
} else {
fmt.Printf("Filter %d. [filter 5]\n", n)
}
}
close(numberChan3)
waitGroup.Done()
}()
go func() {
for n := range numberChan3 {
fmt.Println("n = ", n)
}
waitGroup.Done()
}()
for i := 0; i < 100; i++ {
numberChan1 <- rand.Int63n(100)
}
close(numberChan1)
waitGroup.Wait()
}
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信1399 次点击
上一篇:Go 网络编程(二) (TCP)
0 回复
暂无回复
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
package main
import (
"fmt"
"math/rand"
"sync"
)
func main() {
numberChan1 := make(chan int64, 3)
numberChan2 := make(chan int64, 3)
numberChan3 := make(chan int64, 3)
var waitGroup sync.WaitGroup
waitGroup.Add(3)
go func() {
for n := range numberChan1 {
if n%2 == 0 {
numberChan2 <- n
} else {
fmt.Printf("Filter %d. [filter 2]\n", n)
}
}
close(numberChan2)
waitGroup.Done()
}()
go func() {
for n := range numberChan2 {
if n%5 == 0 {
numberChan3 <- n
} else {
fmt.Printf("Filter %d. [filter 5]\n", n)
}
}
close(numberChan3)
waitGroup.Done()
}()
go func() {
for n := range numberChan3 {
fmt.Println("n = ", n)
}
waitGroup.Done()
}()
for i := 0; i < 100; i++ {
numberChan1 <- rand.Int63n(100)
}
close(numberChan1)
waitGroup.Wait()
}