Sobes.tech
Junior — Middle
107

Go тілінде екі горутин арасында ақпарат алмасуды қалай жүзеге асыруға болады?

Сұралған компаниялар
AvitoAvito
Кадровое агентство BWG

AI-дан жауап

sobes.tech AI

Go тілінде екі горутин арасындағы ақпарат алмасу әдетте арналар (channels) көмегімен жүзеге асырылады. Арналар қауіпсіз түрде деректерді горутиндар арасында жеткізуге және олардың жұмысын синхрондауға мүмкіндік береді.

Мысал ретінде арна арқылы алмасу:

package main

import (
    "fmt"
)

func sender(ch chan<- string) {
    ch <- "Sender-ден сәлем"
}

func receiver(ch <-chan string) {
    msg := <-ch
    fmt.Println("Алушы хабарламаны алды:", msg)
}

func main() {
    ch := make(chan string)
    go sender(ch)
    go receiver(ch)

    // Горутиндар аяқталғанша күтеміз
    var input string
    fmt.Scanln(&input)
}

Мұнда sender арнаға жол жібереді, ал receiver оны оқиды. Арналар деректер алмасуды қауіпсіз етеді, мьютекстер немесе басқа синхрондау механизмдерін қолданбай.