Junior — Middle
Como é efetuada a troca de informações entre goroutines em Go?
sobes.tech IA
Resposta da IA
No Go, a troca de informações entre goroutines é feita principalmente através de canais (channels). Os canais permitem transmitir dados de forma segura entre goroutines, garantindo sincronização e prevenindo condições de corrida.
Exemplo de uso de um canal:
ch := make(chan int)
// Enviando dados em uma goroutine
go func() {
ch <- 42
}()
// Recebendo dados na goroutine principal
value := <-ch
fmt.Println(value) // Vai imprimir 42
Os canais podem ser com buffer ou sem buffer, o que afeta o comportamento de bloqueio ao enviar e receber dados. Além disso, para troca, podem ser usados outros mecanismos, como variáveis compartilhadas com mutexes, mas os canais são a principal forma idiomática de comunicação em Go.