代码1:
forever := make(chan bool)
//启用协程处理消息
go func() {
for d := range msgs {
//消息逻辑处理,可以自行设计逻辑
log.Printf("Received a message: %s", d.Body)
}
}()
log.Printf(" [*] Waiting for messages. To exit press CTRL+C")
<-forever
代码2:
func main() {
forever := make(chan bool)
xx := make(chan bool)
msgs := (<-chan bool)(xx)
go func() {
log.Println("aaa")
for d := range msgs {
log.Println("Received a message:", d)
}
}()
log.Print("bbb")
<-forever
}
老师,这代码1是项目中的消费端代码,其中中的msgs其实是一个用于接收的单向通道,这里forever也是一个通道,但这里却不会出现fatal error: all goroutines are asleep - deadlock!
而代码2是我用一个单向通道去模拟msgs的,这却会报以上错误,为啥啊?