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