Go channels, in combination with Goroutines, are first-class citizens for asynchronous communication. Channels become especially powerful when we use select statements. These statements allow a Goroutine to intelligently handle requests from multiple channels at once.