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.