Sobes.tech
Junior — Middle

Quais são as melhores práticas e dicas a ter em conta ao usar canais para comunicação entre processos?

sobes.tech IA

Resposta da IA

Ao usar canais (channels) em Go para comunicação entre processos (mais precisamente, entre goroutines), é importante seguir as seguintes melhores práticas:

  • Utilize canais para sincronização e transferência de dados, evitando variáveis globais e bloqueios.
  • Feche os canais quando não forem mais necessários, para evitar bloqueios e fugas.
  • Não envie em um canal fechado, pois isso causará um pânico.
  • Use canais com buffer se precisar evitar bloqueios do remetente com um buffer pequeno.
  • Evite condições de corrida de dados, transmitindo dados através de canais em vez de variáveis compartilhadas.
  • Use select para lidar com múltiplos canais e tempos limite.

Exemplo:

done := make(chan struct{})
ch := make(chan int)

// Emissor
func() {
    for i := 0; i < 5; i++ {
        ch <- i
    }
    close(ch)
}()

// Receptor
for val := range ch {
    fmt.Println(val)
}

close(done)

Este método garante uma comunicação segura e eficiente entre goroutines.