[concurrency - Why does Go panic on writing to a closed channel? - Stack Overflow](https://stackoverflow.com/questions/34897843/why-does-go-panic-on-writing-to-a-closed-channel)
>チャンネルの "クローズ "は、実際には、チャンネルの特別な値を送信することです。この特別な値は、今後一切の値を送信しないことを約束するものです。閉じた後のチャンネルで値を送ろうとするとパニックになります。実際に値を送るとcloseによる保証に違反するからです。close は特殊な送信であるため、チャネルが閉じられた後に値を送信することもできません。
>チャンネルクローズの唯一の用途は、読者に「もうこれ以上の値はありません」という信号を送ることです。これは、値のソースが1つの場合か、複数のソースが協調している場合にのみ意味があります。複数のゴルーチンが通信せずにチャネルを閉じる合理的なプログラムはありません。それは、複数のゴルーチンが「もう送るべき値がない」ことを知っているということになりますが、通信しないのにどうやって判断するのでしょうか?
>チャネルを閉じると、そのチャネルはリソースとして解放されます。チャネルを何度も閉じることは、ファイル記述子を何度も閉じたり、割り当てられたメモリブロックを何度も解放したりすることと同じくらい意味がありません。このような行為はコードが壊れていることを意味し、閉じたチャネルを閉じるとパニックが発生するのはそのためです。(Rob Pike)
[Go design detail rationale question - channel close](https://groups.google.com/d/msg/golang-nuts/_Q6FCjWIr18/Wb_NlyusRL8J)