Junior — Middle
Cum se realizează schimbul de mesaje între expeditor și destinatarul datelor în limbajul Go?
sobes.tech AI
Răspuns de la AI
În limbajul Go, schimbul de mesaje între expeditor și receptorul de date se realizează prin canale (channels). Canalele permit goroutine-urilor să schimbe date în siguranță, sincronizând execuția lor.
Un canal se creează cu ajutorul funcției make și poate fi cu tampon sau fără tampon:
ch := make(chan int) // canal fără tampon
chBuf := make(chan int, 5) // canal cu tampon de dimensiune 5
Trimiterea în canal:
ch <- 42 // trimite valoarea 42 în canalul ch
Primirea din canal:
value := <-ch // obține valoarea din canalul ch
Exemplu de schimb de mesaje între două goroutine:
package main
import (
"fmt"
"time"
)
func main() {
ch := make(chan string)
go func() {
ch <- "Salut din goroutine"
}()
msg := <-ch
fmt.Println(msg)
}
Astfel, canalele în Go asigură o comunicare sigură și convenabilă între fluxurile de execuție paralele.