Junior — Middle
Jak je zajištěna výměna informací mezi gorutinami v Go?
sobes.tech AI
Odpověď od AI
V jazyce Go je výměna informací mezi gorutinami prováděna převážně pomocí kanálů (channels). Kanály umožňují bezpečný přenos dat mezi gorutinami, zajišťují synchronizaci a předcházejí závodním podmínkám.
Příklad použití kanálu:
ch := make(chan int)
// Odeslání dat v gorutině
go func() {
ch <- 42
}()
// Přijímání dat v hlavní gorutině
value := <-ch
fmt.Println(value) // Vytiskne 42
Kanály mohou být s bufferem nebo bez, což ovlivňuje chování blokování při odesílání a přijímání dat. Kromě toho lze pro výměnu použít i jiné mechanismy, například sdílené proměnné s mutexy, ale kanály jsou hlavní idiomatický způsob komunikace v Go.