ExpertiDict

Go · Intermediário · Português · Técnico

direção de channel

/d͡ʒi.ɾeˈsɐ̃w̃ d͡ʒi ˈtʃɛ.new/substantivo

Restrição no tipo do channel para só enviar (chan<- T) ou só receber (<-chan T). Documenta a intenção da função, e o compilador impede o uso contrário.

Onde usar

Assinaturas de produtores e consumidores usam direção para deixar claro quem escreve e quem lê. Um chan bidirecional converte implicitamente para uma direção, mas não o inverso.

Em código

func produz(out chan<- int) {
  out <- 1
}
func consome(in <-chan int) int {
  return <-in // in <- 1 não compila
}

Exemplos

A função recebe um channel só de leitura, então não consegue enviar nada.

Declarei o parâmetro como chan<- int para deixar claro que ele só produz.

Cuidado

Não confunda a posição da seta: chan<- T é só envio e <-chan T é só recebimento; a seta aponta para onde o dado vai.

Sinônimos

channel somente leitura ou escrita

Veja também

Todos os termos de Go