Go · Essencial · Inglês · Técnico
channel
Tubo tipado que permite goroutines enviarem e receberem valores de forma sincronizada. Criado com make(chan T), é a base do estilo de comunicação por mensagens do Go.
Onde usar
Quando duas goroutines precisam trocar dados, um channel evita compartilhar memória e travar com mutex. Em revisão, vale checar quem envia, quem recebe e quem fecha.
Em código
ch := make(chan int)
go func() { ch <- 42 }()
v := <-ch
fmt.Println(v) // 42Exemplos
The worker sends the result through a channel.
O worker envia o resultado por um channel.
Use a channel instead of sharing the slice between goroutines.
Use um channel em vez de compartilhar a slice entre goroutines.
Cuidado
Nem todo problema pede channel: para proteger um contador simples, um mutex costuma ser mais direto.
Sinônimos
canal
Origem
Do latim canalis, 'conduto', via inglês channel.