Go - pipelines
- Ex. Make 3 channels and chan together, print in fmt.Println(<-channel)
- There is no way to check is a channel closed
- Close pipeline safely. Check receive result and close channel.

- Range loop support this pattern

- Purpose of closing a channel is to notify client. Channel will be gc whenever it is unreachable
- Different from normal channel, file channel must be closed by ourselves
- Close a closed channel will panic
