Os canais podem ser considerados tubos através dos quais os Goroutines se comunicam.
Semelhante a como a água flui de uma extremidade a outra em um tubo, os dados podem ser enviados de uma extremidade e recebidos da outra extremidade usando canais.
Cada canal possui um tipo associado a ele. Este tipo é o tipo de dados que o canal tem permissão para transportar. Nenhum outro tipo pode ser transportado usando o canal.
O valor zero de um canal é nil. Canais nulos não têm nenhuma utilidade e, portanto, o canal deve ser definido usando make, similar a maps e slice.
channel := make(chan int) // transporta dados do tipo int