Sobes.tech
Junior — Middle

Kā tiek īstenota ziņojumu apmaiņa starp sūtītāju un saņēmēju datu valodā Go?

sobes.tech AI

Atbilde no AI

Go valodā ziņojumu apmaiņa starp sūtītāju un saņēmēju tiek īstenota ar kanāliem (channels). Kanāli ļauj goroutine droši apmainīties ar datiem, sinhronizējot to izpildi.

Kanāls tiek izveidots ar funkciju make un var būt ar buferi vai bez:

ch := make(chan int)        // bez bufera kanāls
chBuf := make(chan int, 5)  // ar buferi, izmērs 5

Sūtīšana uz kanāla:

ch <- 42  // sūtīt vērtību 42 uz kanāla

Saņemšana no kanāla:

value := <-ch  // saņemt vērtību no kanāla

Piemērs ziņojumu apmaiņai starp divām goroutine:

package main

import (
    "fmt"
    "time"
)

func main() {
    ch := make(chan string)

    go func() {
        ch <- "Sveiki no goroutine"
    }()

    msg := <-ch
    fmt.Println(msg)
}

Tādējādi, kanāli Go valodā nodrošina drošu un ērtu komunikāciju starp paralēli izpildāmiem pavedieniem.