Golang have a funny toy: Channel. Here has some words from the specification:
A channel provides a mechanism for two concurrently executing functions to synchronize execution and communicate by passing a value of a specified element type.
Yep! It is boring and dull. You can’t understand it when you read it first time. Actually, you can think of it as a PIPE or a FIFO queue. It’s lightweight and simple. Channel is not of Golang origin. It also appears in some other languages(embedded). And most of time, it’s a function as a part of a huge, complexly and heavy message queue system.
OK! Let’s have some fun.