共计 156 个字符,预计需要花费 1 分钟才能阅读完成。
大家好,这是我的代码:
func main () {// synChan := make(chan struct{}, 1)
intChan := make(chan int, 1)
ticker := time.NewTicker(time.Second)
go func() {
for range ticker.C {
select {
case intChan <- 1:
case intChan <- 2:
case intChan <- 3:}
}
// synChan<- struct{}{}
fmt.Println("End [SEND]")
}()
var sum int
for e := range intChan {fmt.Printf("接收到 %dn", e)
sum += e
if sum > 3 {fmt.Println(sum)
break
}
}
fmt.Println("End [REC]")
// <-synChan}
这是《GO 并发编程》里讲通道的一个题目,但是我试了几个方法之后会成死锁,请问大家如何打印出这个 fmt.Println("End [SEND]")。这里为什么不能打印出来?我想过是 main 函数退出了,所以试着使用通道阻塞,但直接会出死锁。。。
正文完