Junior — Middle
De que maneiras pode-se usar um canal num programa?
sobes.tech IA
Resposta da IA
Em Go, o canal (channel) é utilizado para transmitir dados entre goroutines e organizar a sincronização.
As principais formas de usar um canal:
-
Envio e receção de dados:
- Envio:
ch <- value - Receção:
value := <-ch
- Envio:
-
Canais com buffer e sem buffer:
- O canal sem buffer bloqueia o remetente até que o receptor aceite os dados.
- O canal com buffer permite enviar vários valores sem bloqueio, até que o buffer esteja cheio.
-
Fechar o canal:
- Pode-se fechar um canal com a função
close(ch), para indicar que não haverá mais dados.
- Pode-se fechar um canal com a função
-
Uso de select para multiplexação:
- Permite esperar em vários canais simultaneamente e reagir ao primeiro disponível.
Exemplo:
ch := make(chan int, 2) // canal com buffer
// Envio
ch <- 1
ch <- 2
// Receção
val := <-ch
// Fechar
close(ch)
// Uso de select
select {
case v := <-ch:
fmt.Println("Recebido", v)
case <-time.After(time.Second):
fmt.Println("Timeout")
}
Assim, os canais permitem trocar dados de forma segura e sincronizar a execução de goroutines.