diff --git a/base/channel/oneway/main.go b/base/channel/oneway/main.go new file mode 100644 index 0000000..616ef4c --- /dev/null +++ b/base/channel/oneway/main.go @@ -0,0 +1,39 @@ +package main + +import ( + "fmt" + "sync" +) + +var wg = new(sync.WaitGroup) + +// 只写 单向通道 +func producer(ch chan<- int) { + defer wg.Done() + + for i := 0; i < 100; i++ { + ch <- i + } + + close(ch) +} + +// 只读 单向通道 +func consumer(ch <-chan int) { + defer wg.Done() + + for i := range ch { + fmt.Printf("%d\n", i) + } +} + +func main() { + // 可读可写 双向通道 + ch := make(chan int, 10) + + wg.Add(2) + go producer(ch) + go consumer(ch) + + wg.Wait() +}