A sintaxe para enviar e receber dados de um canal é fornecida abaixo:
data := <- a // lê conteúdo do canal a
a <- data // escreve no canal a
A direção da seta em relação ao canal especifica se os dados são enviados ou recebidos.
Envios e recebimentos em um canal são bloqueados por padrão. O que isto significa? Quando os dados são enviados para um canal, o controle é bloqueado na instrução de envio até que algum outro Goroutine leia daquele canal.
Da mesma forma, quando os dados são lidos de um canal, a leitura é bloqueada até que algum Goroutine grave dados nesse canal.