Summary
In this chapter, we introduced goroutines and channels, the two concurrency primitives supported by the Go language, as well as some of the fundamental synchronization primitives in the Go library. These primitives will be used in the next chapter to solve some of the popular concurrency problems.