Files
learn-golang/go-channel-practice/pipeline.go
2025-12-26 17:56:02 +08:00

38 lines
664 B
Go

package main
import "fmt"
// 生产者:产生 1~5
func producer1(out chan<- int) {
for i := 1; i <= 5; i++ {
fmt.Println("[Producer] 发送:", i)
out <- i
}
close(out)
}
// 处理者:把数字放大 10 倍
func multiplier(in <-chan int, out chan<- int) {
for v := range in {
fmt.Println("[Multiplier] 接收:", v)
out <- v * 10
}
close(out)
}
// 消费者:打印结果
func consumer1(in <-chan int) {
for v := range in {
fmt.Println("[Consumer] 最终结果:", v)
}
}
func main() {
ch1 := make(chan int, 2) // 有缓冲,减轻 producer 阻塞
ch2 := make(chan int, 2)
go producer1(ch1)
go multiplier(ch1, ch2)
consumer1(ch2)
}