invalid operation: range ch (receive from send-only type chan<- int)
package main import ( "fmt" "os" "os/signal" "syscall")// 向chan 发送数据,只能向chan里写数据func producters(factor int,c chan<- int) { for i:=1; i<10;i++ { c<- factor * i }}// 承受参数,// 只能取channel中的数据,千万不要写成chan<-// 不然会报错:// ./producersAndConsumers.go:24:9:// invalid operation: range ch (receive from send-only type chan<- int)func consumers(ch <-chan int) { for v:=range ch { fmt.Println("reev:",v) }}func main() { var status chan int if status == nil { fmt.Println("未初始化的chan 值是nil") } status = make(chan int) status <- 1 status <- 2 // 如果塞值超过 设置的chan 缓冲值,或者是个无缓冲的chan,当超过容量就回呈现死锁 ch:=make(chan int,10) go producters(2,ch) go producters(3,ch) go consumers(ch) // Ctrl+C 退出 sig := make(chan os.Signal, 1) signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM) fmt.Printf("quit (%v)\n", <-sig)}