Sobes.tech
Junior — Middle

Hogyan valósul meg a kommunikáció az adatok küldője és fogadója között a Go nyelvben?

sobes.tech MI

Válasz az MI-től

A Go nyelvben az üzenetküldés a küldő és a fogadó között csatornák (channels) segítségével valósul meg. A csatornák lehetővé teszik a goroutine-ok számára, hogy biztonságosan cseréljenek adatokat, szinkronizálva végrehajtásukat.

Egy csatornát a make függvény segítségével hozunk létre, és lehet pufferelt vagy puffer nélküli:

ch := make(chan int)        // puffer nélküli csatorna
chBuf := make(chan int, 5)  // pufferelt csatorna, mérete 5

Küldés a csatornára:

ch <- 42  // érték küldése a csatornára

Fogadás a csatornáról:

value := <-ch  // érték fogadása a csatornáról

Példa üzenetcsere két goroutine között:

package main

import (
    "fmt"
    "time"
)

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

    go func() {
        ch <- "Helló a goroutinéból"
    }()

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

Így a csatornák Go-ban biztonságos és kényelmes kommunikációt biztosítanak párhuzamos végrehajtási szálak között.