Sobes.tech
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-ում ալիքները ապահով և հարմարավետ հաղորդակցություն են ապահովում միաժամանակյա գործարկվող հոսքերի միջև։