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.