In this chapter, you studied many unique Go features including goroutines, channels, and pipelines. Additionally, you found out how to give your goroutines enough time to finish their jobs using the functionality offered by the sync package. Finally, you learned that channels can be used as parameters to Go functions. This allows developers to create pipelines where data can flow.
The next chapter will continue talking about Go concurrency by introducing the formidable select keyword. This keyword helps Go channels to perform many interesting jobs, and I think that you will be truly amazed by its power.
After that, you will see two techniques that allow you to time out one or more goroutines that are stalled for some reason. Afterward, you will learn about nil channels, signal channels, channel of channels, and buffered channels, as well as the context package.