package channel_clos
import (
"fmt"
"sync"
"testing"
)
func dataConsumer(ch chan int,wg *sync.WaitGroup){
go func() {
for i:=0 ; i<10; i++{
if data,ok := <-ch;ok{
fmt.Println(data)
}else{
fmt.Println("false")
}
}
wg.Done()
}()
}
func dataProducer(ch chan int,wg *sync.WaitGroup){
go func() {
for i:=0 ; i<10; i++{
ch<-i
}
close(ch)
wg.Done()
}()
}
func TestConsumer(t *testing.T){
var wg sync.WaitGroup
ch := make(chan int,1)
wg.Add(1)
dataProducer(ch,&wg)
wg.Add(1)
dataConsumer(ch,&wg)
wg.Wait()
}
Go基础--22 只执行一次任务
最新推荐文章于 2024-04-05 20:03:57 发布
该篇博客探讨了Go语言中并发编程的一个常见模式——消费者生产者模型,通过`dataProducer`和`dataConsumer`函数展示了如何使用通道(channel)进行数据传递。在生产者函数中,向通道发送10个整数后关闭通道;消费者函数则从通道接收数据并打印,直到通道关闭。测试函数`TestConsumer`确保了整个过程的正确同步。
600

被折叠的 条评论
为什么被折叠?



