Junior — Middle
Cum se realizează schimbul de informații între goroutines în Go?
sobes.tech AI
Răspuns de la AI
În Go, schimbul de informații între goroutines se face în principal prin canale (channels). Canalele permit transmiterea sigură a datelor între goroutines, asigurând sincronizarea și prevenind condițiile de cursă.
Exemplu de utilizare a unui canal:
ch := make(chan int)
// Trimiterea datelor într-o goroutine
go func() {
ch <- 42
}()
// Primirea datelor în goroutine-ul principal
value := <-ch
fmt.Println(value) // Va afișa 42
Canalele pot fi cu buffer sau fără buffer, ceea ce influențează comportamentul de blocare la trimitere și primire. În plus, pentru schimb, se pot folosi și alte mecanisme, precum variabile comune cu mutex-uri, dar canalele sunt principalul mod idiomatic de comunicare în Go.