1. 程式人生 > >golang channel tips

golang channel tips

golang eal OS quest Golan real ann 發送 writing

1. 讀nil的channel是永遠阻塞的。關閉nil的channel會造成panic。


2. closed channel的行為:

向close的channel發消息會panic。因為go建議向channel發送數據的人負責close channel。

如果close的channel還有數據,仍然可以讀取。

讀取close的並且空的channel,會馬上返回零值(註意chan int會返回0)。

A channel "close" is really just a send of a special value on a channel.


3. 可以對channel使用range。這樣不用寫select,顯得代碼簡潔。


4. ok=false表示channel空並且close了 (註意不是“或者”)。

參考:

https://stackoverflow.com/questions/34897843/why-does-go-panic-on-writing-to-a-closed-channel

golang channel tips