请问《cloud.native.go》这段代码中goroutine为什么是run forever

ximen · 2017-08-21 10:01:05 · 997 次点击

谢谢你的回答。 1 堵塞是为了goroutine不会被回收是吧? 2 这个看着不像是死循环啊 ? for d := range msgs { log.Printf("Received a message: %s", d.Body) }

#2
更多评论

forever 是一个无缓冲 channel,只是从里面取值,没有给它发送值,会一直堵塞。另外一个 goroutine 是一个死循环,所以一直运行

#1
  1. 是的,程序结束的时候,goroutine会被回收
  2. msgs也是一个unbuffered channel, range channel会一直运行,直到channel关闭
#3