先回答为什么的问题
答: 注释掉select{},因为main 主 goroutine 执行完退出后,其它goroutine 都会退出,所以不会报错。
再说说为何 select{},会造成deadlock 错误,因为有 goroutine 无限循环的往channel 写数据,大但main 主 goroutine 只读二次,所以造成deadlock 。主 goroutine 被select{} 空的阻塞了。
非缓冲的channel,如果主goroutine 没有退出的情况下,channel 只有写,没有读,就会造成deadlock。
按照下面这样修改,就不会造成deadlock 问题。
