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.