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

  1. Envio e receção de dados:

    • Envio: ch <- value
    • Receção: value := <-ch
  2. 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.
  3. Fechar o canal:

    • Pode-se fechar um canal com a função close(ch), para indicar que não haverá mais dados.
  4. 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.