作者回复: 这个在前面的课程中讲到过,chan是一个结构,这个结构在传递时是被复制的,其中的指针成员也会被复制到新的chan中,所以新旧两个chan会指向同一个内存区域
作者回复: 通道应该由生产者来关闭,在关闭的channel上发送数据程序会panic
作者回复: 这部分不会有问题。
作者回复: 虽然,语句是串行的,是线程的调度不是
作者回复: 实际上和方法调用的直接传递复制是不同的,还是通过chan来完成的
作者回复: waitgroup 方法是没有timeout可以设置的。你可以通过后面课程介绍的取消任务相关的内容自己实现一个有超时的等待(参见select部分内容)
作者回复: 这是因为你用的是buffered chan他是非阻塞的。所以只要外面的主协程在退出前能有时间让他运行完,他就可以输出。
你可以在TestSelect最后退出前加一个sleep 1秒,你就会发现更短的timeout一样会输出那些信息
作者回复: 可以的