Sobes.tech
Junior — Middle

Cum se realizează schimbul de informații între două goroutines în limbajul Go?

sobes.tech AI

Răspuns de la AI

În Go, schimbul de informații între două goroutines se realizează de obicei folosind canale (channels). Canalele permit transmiterea sigură a datelor între goroutines și sincronizarea acestora.

Exemplu de schimb printr-un canal:

package main

import (
    "fmt"
)

func sender(ch chan<- string) {
    ch <- "Salut de la sender"
}

func receiver(ch <-chan string) {
    msg := <-ch
    fmt.Println("Mesaj primit:", msg)
}

func main() {
    ch := make(chan string)
    go sender(ch)
    go receiver(ch)

    // Așteptăm ca goroutine-urile să se termine
    var input string
    fmt.Scanln(&input)
}

Aici, sender trimite un șir de caractere în canal, iar receiver îl citește. Canalele asigură o schimb sigur de date fără a fi nevoie de mutexuri sau alte mecanisme de sincronizare.