Sobes.tech
Senior

Ce sunt canalele în Go și pentru ce sunt folosite? Ce tipuri de canale există?

sobes.tech AI

Răspuns de la AI

Canalele în Go sunt un mecanism pentru transmiterea datelor între goroutines, asigurând sincronizarea și schimbul de informații.

Caracteristici principale:

  • Permite transmiterea sigură a valorilor între goroutines care rulează în paralel.
  • Asigură blocarea expeditorului dacă canalul este plin și a receptorului dacă canalul este gol.

Tipuri de canale:

  • Bidirecționale (chan T): pot trimite și primi date.
  • Doar pentru trimitere (chan<- T): pot trimite doar date.
  • Doar pentru primire (<-chan T): pot primi doar date.

Exemplu de utilizare a unui canal:

ch := make(chan int) // canal bidirecțional

// Trimitere într-o goroutine
go func() {
    ch <- 42
}()

// Primire
val := <-ch
fmt.Println(val) // 42

Canalele facilitează comunicarea și sincronizarea între goroutines, evitând necesitatea blocărilor explicite.