这个问题在这里已经有了答案:
Is it OK to leave a channel open?
(6 个回答)
2年前关闭。
查看 Go 中的一些工作池示例,我无法确定关闭 channel 的一致方法。例如,这个 project on Github似乎关闭了所有 channel ,而这 similar implementation一次也不关闭一个 channel !我知道关闭 channel 表示完成;无法在其上发送更多值。但它只是一个运行时断言吗?不打开 channel 也会留下内存泄漏吗?或者你只是依赖垃圾收集?如果我明确地这样做,我会在哪里关闭第二个示例中打开的 channel ?
最佳答案
channel 可以以您喜欢的任何方式使用:
注意:您不必关闭 channel 即可对其进行垃圾收集。一旦 channel 超出生产者和消费者的范围,即使 channel 上有未读的项目,它也会被回收。
关于go - 何时关闭 channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60394401/