The previous chapter discussed concurrency in Go, mutexes, the atomic package, the various types of channels, race conditions, and how the select statement allows you to use channels as glue to control goroutines and allow them to communicate.
The Go topics in this chapter are very practical and important, especially if you are interested in improving the performance of your Go programs and discovering bugs quickly. This chapter primarily addresses code optimization, code testing, code documentation, and code profiling.
Code optimization is a process where one or more developers try to make certain parts of a program run faster, be more efficient, or use fewer resources. Put simply, code optimization is about eliminating the bottlenecks of a program.
Code testing is about making sure that your code does what you want it to do. In this...