Adding my fun expericence in trying use channel as an argument for an function, and use it to communication, and use a local channel to do so.
Instead of using Sleep, use a little smarter way to wait for the goroutine to finish, still not that good, but it's better than old one I think.