Sobes.tech
Junior — Middle

Go tilida ma'lumot yuboruvchi va oluvchi o'rtasida xabar almashinuvi qanday amalga oshiriladi?

sobes.tech AI

AIdan javob

Go tilida, xabar almashinuvi yuboruvchi va qabul qiluvchi o‘rtasida kanallar (channels) yordamida amalga oshiriladi. Kanallar goroutinlar (goroutines) xavfsiz tarzda ma'lumot almashishini ta'minlaydi va ularning bajarilishini sinxronlashtiradi.

Kanal make funksiyasi yordamida yaratiladi va u bufferli yoki buffersiz bo‘lishi mumkin:

ch := make(chan int)        // buffersiz kanal
chBuf := make(chan int, 5)  // bufferli kanal, o‘lchami 5

Kanalga yuborish:

ch <- 42  // 42 qiymatini kanalga yuborish

Kanaldan olish:

value := <-ch  // kanaldan qiymat olish

Ikki goroutinlar o‘rtasida xabar almashinuvi misoli:

package main

import (
    "fmt"
    "time"
)

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

    go func() {
        ch <- "Goroutinadan salom"
    }()

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

Shu tarzda, Go tilidagi kanallar parallel bajarilayotgan oqimlar o‘rtasida xavfsiz va qulay aloqa ta'minlaydi.