Sobes.tech
Junior — Middle

Буферсиз каналдан маалыматтарды туура окуду кантип жүргүзүү керек?

sobes.tech AI

AIден жооп

Go тилинде, каналдан маалыматтарды буферсиз окуу үчүн блоктогон эмес окуу же маалыматтын бар-жогун көзөмөлдөө менен окуу колдонулушу керек. Каналдар стандарттык түрдө буфердүү же буферсиз болушу мүмкүн, бирок буферсиз окуу үчүн көбүнчө буферсиз каналдар жана <- оператору колдонулат.

Буферсиз каналдан окуунун мисалы:

ch := make(chan int) // буферсиз канал

// Өзгөрмөдө жөнөтүү
//
go func() {
    ch <- 42
}()

// Окуу (маалымат пайда болгонго чейин күтөт)
value := <-ch
fmt.Println(value) // 42

Окууда блоктогонду алдын алуу үчүн select жана default колдонсо болот:

select {
case val := <-ch:
    fmt.Println("Алынды", val)
default:
    fmt.Println("Маалымат жок")
}