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