Sobes.tech
Junior — Middle

De que forma é preferível organizar a transmissão de dados nas goroutines: usando canais ou através de variáveis externas?

sobes.tech IA

Resposta da IA

No Go, é preferível passar dados para goroutines através de canais em vez de variáveis externas. Isto deve-se ao facto de os canais fornecerem uma sincronização segura e a transferência de dados entre goroutines, evitando condições de corrida.

Uso de canais:

  • Permite controlar explicitamente o fluxo de dados.
  • Proporciona bloqueio e sincronização.
  • Melhora a legibilidade e manutenção do código.

Exemplo de transmissão de dados através de um canal:

ch := make(chan int)

// Envio de dados
go func() {
    ch <- 42
}()

// Receção de dados
val := <-ch
fmt.Println(val) // 42

O uso de variáveis externas requer sincronização adicional (por exemplo, com mutexes), o que complica o código e aumenta o risco de erros.

Por isso, recomenda-se usar canais para transmissão de dados entre goroutines.