Channels (unbuffered
, buffered
)
Channels
-
Mecanismo de comunicação entre goroutines, permitindo sincronização e troca de dados.
-
Declarados com
chan tipo
-
Dois tipos:
- Unbuffered: Bloqueia até que remetente e receptor estejam prontos.
- Buffered: Permite enviar até a capacidade do buffer sem bloquear.
Exemplos
Unbuffered channel
Carregando editor interativo...
Buffered channel
Carregando editor interativo...
Comparação com Java
Java
- Usa
BlockingQueue
ou sincronização comsynchronized/Lock
Go
- Channels são mais simples e seguros, evitando condições de corrida.
Caso de uso
Channels são usados para coordenar goroutines, como em pipelines de dados ou comunicação entre trabalhadores.