Junior — Middle
Kaip įgyvendinamas žinučių keitimasis tarp siuntėjo ir gavėjo duomenų Go kalboje?
sobes.tech AI
Atsakymas iš AI
Go kalboje žinučių keitimas tarp siuntėjo ir gavėjo įgyvendinamas naudojant kanalus (channels). Kanalai leidžia gorutinoms saugiai keistis duomenimis, sinchronizuojant jų vykdymą.
Kanalas sukuriamas naudojant funkciją make ir gali būti su buferiu arba be:
ch := make(chan int) // be buferio kanalas
chBuf := make(chan int, 5) // su buferiu, dydis 5
Siuntimas į kanalą:
ch <- 42 // siųsti reikšmę 42 į kanalą
Gavimas iš kanalo:
value := <-ch // gauti reikšmę iš kanalo
Pavyzdys žinučių keitimo tarp dviejų goroutinų:
package main
import (
"fmt"
"time"
)
func main() {
ch := make(chan string)
go func() {
ch <- "Sveiki iš goroutine"
}()
msg := <-ch
fmt.Println(msg)
}
Taip, kanalai Go kalboje užtikrina saugią ir patogią komunikaciją tarp paraleliai vykdomų srautų.