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)
}
发表回复