Sobes.tech
Junior — Middle

Cum se implementează crearea și transmiterea datelor printr-un canal în sistemul dumneavoastră?

sobes.tech AI

Răspuns de la AI

În Go, pentru a crea și transmite date printr-un canal, se folosește tipul încorporat chan. Canalele permit schimbul sigur de date între goroutines.

Exemplu de creare și utilizare a unui canal:

package main

import (
    "fmt"
)

func main() {
    // Creăm un canal pentru transmiterea numerelor întregi
    ch := make(chan int)

    // Pornim o goroutine care trimite date în canal
    go func() {
        ch <- 42 // trimitem numărul 42
        close(ch) // închidem canalul după trimitere
    }()

    // Primim date din canal
    for val := range ch {
        fmt.Println("Valoare primită:", val)
    }
}

Aici:

  • make(chan int) creează un canal pentru transmiterea int.
  • Operatorul <- este folosit pentru a trimite (ch <- 42) și a primi (val := <-ch) date.
  • Închiderea canalului (close(ch)) semnalează că nu vor mai fi date.
  • Bucla for range citește din canal până când acesta este închis.

Astfel, canalele asigură sincronizarea și transmiterea datelor între fire de execuție paralele.