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