Sobes.tech
Junior — Middle

Kuidas toimub sõnumivahetamine andmete saatja ja saaja vahel Go keeles?

sobes.tech AI

Vastus AI-lt

Go keeles toimub sõnumite vahetamine saatja ja vastuvõtja vahel kanalite (channels) abil. Kanalid võimaldavad goroutine'idel turvaliselt andmeid vahetada, sünkroniseerides nende täitmist.

Kanal luuakse make funktsiooni abil ning see võib olla buferdatud või buferdamata:

ch := make(chan int)        // buferdamata kanal
chBuf := make(chan int, 5)  // buferdatud kanal suurusega 5

Saada kanalile:

ch <- 42  // saada väärtus 42 kanalile

Võta kanalilt:

value := <-ch  // võta väärtus kanalilt

Näide sõnumite vahetusest kahe goroutine vahel:

package main

import (
    "fmt"
    "time"
)

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

    go func() {
        ch <- "Tere goroutine'ist"
    }()

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

Sellisel viisil tagavad kanalid Go keeles turvalise ja mugava suhtluse paralleelsete täitmisvoogude vahel.