Sobes.tech
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.