Sobes.tech
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.