package main
import (
"fmt"
"sync"
"time"
)
var wggg sync.WaitGroup
//申明管道类型 queue <-chan string queue 是管道名称 <-chan 管道类型 单向管道还是双向管道 string 是申明管道中传输的数据类型
func consumer(queue chan string){
defer wggg.Done()
//如果是不判断管道是否关闭,这个循环就会一直跑下去
//for {
// data:= <- queue
// fmt.Println(data)
// time.Sleep(time.Second)
//}
for {
data,ok:= <- queue
if !ok{
break
}
fmt.Println(data)
time.Sleep(time.Second)
//放入一个数据
queue<-"取到返回的数据"
}
}
func main(){
//有没有缓存 1.有缓存的,2.无缓冲
//双向的还是单向的 为了安全 还提供了单向的channel
//普通通道 可以给单向通道传输数据,但单向不能给双向传输数据 chan<- 给通道写入数据 <-chan 从通道中取出数据
var msgg chan string
msgg=make(chan string)
wggg.Add(1)
go consumer(msgg)
msgg <-"数据"// 把数据字符串加入管道中
fmt.Println("等待返回值")
fmt.Println(<-msgg)//取值
close(msgg)
wggg.Wait()
}