Sobes.tech
Senior

Šta su kanali u Go i čemu služe? Koje vrste kanala postoje?

sobes.tech АИ

Одговор од АИ

Kanali u Go su mehanizam za prenos podataka između gorutina, koji obezbeđuje sinhronizaciju i razmenu informacija.

Glavne osobine:

  • Omogućavaju siguran prenos vrednosti između paralelno izvršavajućih gorutina.
  • Obezbeđuju blokiranje pošiljaoca ako je kanal pun i primaoca ako je kanal prazan.

Tipovi kanala:

  • Dvosmerni (chan T): mogu slati i primati podatke.
  • Samo za slanje (chan<- T): mogu samo slati podatke.
  • Samo za primanje (<-chan T): mogu samo primati podatke.

Primer korišćenja kanala:

ch := make(chan int) // dvosmerni kanal

// Slanje u gorutini
go func() {
    ch <- 42
}()

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

Kanali olakšavaju komunikaciju i sinhronizaciju između gorutina, izbegavajući potrebu za eksplicitnim blokadama.