Senior
O que são canais em Go e para que servem? Quais tipos de canais existem?
sobes.tech IA
Resposta da IA
Os canais em Go são um mecanismo para transmitir dados entre goroutines, garantindo sincronização e troca de informações.
Principais características:
- Permitem transmitir valores de forma segura entre goroutines que executam em paralelo.
- Garantem bloqueio do emissor se o canal estiver cheio e do receptor se o canal estiver vazio.
Tipos de canais:
- Bidirecionais (chan T): podem enviar e receber dados.
- Somente para enviar (chan<- T): podem apenas enviar dados.
- Somente para receber (<-chan T): podem apenas receber dados.
Exemplo de uso de canal:
ch := make(chan int) // canal bidirecional
// Enviando em uma goroutine
go func() {
ch <- 42
}()
// Recebendo
val := <-ch
fmt.Println(val) // 42
Canais facilitam a comunicação e sincronização entre goroutines, evitando a necessidade de bloqueios explícitos.