# README
Select
Sometimes we have a single goroutine listening to multiple channels and want to process data in the order it comes through each channel.
A select
statement is used to listen to multiple channels at the same time. It is similar to a switch
statement but for channels.
select {
case i, ok := <- chInts:
fmt.Println(i)
case s, ok := <- chStrings:
fmt.Println(s)
}
The first channel with a value ready to be received will fire and its body will execute. If multiple channels are ready at the same time one is chosen randomly. The ok
variable in the example above refers to whether or not the channel has been closed by the sender yet.
Assignment
Complete the logMessages
function.
Use an infinite for
loop and a select statement to log the emails and sms messages as they come in order across the two channels. Add a condition to return
from the function when one of the two channels closes, whichever is first.
Use the logSms
and logEmail
functions to log the messages.