ExpertiDict

Go · Essencial · Inglês · Técnico

channel

/ˈtʃæn.əl/substantivo

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) // 42

Exemplos

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.

Veja também

Todos os termos de Go