Junior — Middle
Ինչպե՞ս է իրականացնում հաղորդագրությունների փոխանակումը տվյալների ուղարկող և ստացող միջև Go լեզվում։
sobes.tech AI
Պատասխան AI-ից
Go լեզվում հաղորդագրությունների փոխանակումը ուղարկողի և տվյալների ստացողի միջև իրականացնում է ալիքների (channels) միջոցով: Ալիքները թույլ են տալիս goroutine-ներին անվտանգ փոխանակել տվյալներ, սինխրոնիզացնելով նրանց կատարումը:
Ալյակը ստեղծվում է make ֆունկցիայի միջոցով և կարող է լինել բուֆերային կամ առանց բուֆերային:
ch := make(chan int) // առանց բուֆերային ալիք
chBuf := make(chan int, 5) // բուֆերային ալիք, չափը 5
Ուղարկում ալիքին:
ch <- 42 // ուղարկել արժեք 42 ալիքին
Ստանում ալիքից:
value := <-ch // ստանալ արժեք ալիքից
Օրինակ՝ հաղորդագրությունների փոխանակում երկու goroutine-ների միջև:
package main
import (
"fmt"
"time"
)
func main() {
ch := make(chan string)
go func() {
ch <- "Բարև goroutine-ից"
}()
msg := <-ch
fmt.Println(msg)
}
Այսպիսով, Go-ում ալիքները ապահով և հարմարավետ հաղորդակցություն են ապահովում միաժամանակյա գործարկվող հոսքերի միջև։