Sobes.tech
Junior — Middle

Каналдар кай жана кандайча маалымат алмашуу үчүн колдонулат деген мисал келтире аласызбы?

sobes.tech AI

AIден жооп

Go тилинде каналдар goroutineдердин ортосунда коопсуз маалымат алмашуу үчүн колдонулат, аларды синхрондоштуруу жана маанилерди өткөрүү мүмкүнчүлүгүн берет.

Мисал катары, бир goroutineден экинчи goroutineге сандарды өткөрүү үчүн каналды колдонуу:

package main

import (
    "fmt"
    "time"
)

func producer(ch chan int) {
    for i := 0; i < 5; i++ {
        ch <- i // маалыматтарды каналга жөнөтүү
        time.Sleep(time.Millisecond * 500)
    }
    close(ch) // бардык маалыматтар жөнөтүлгөндөн кийин каналды жабуу
}

func consumer(ch chan int) {
    for val := range ch { // каналдан маалымат алуу
        fmt.Println("Алып келинди:", val)
    }
}

func main() {
    ch := make(chan int)
    go producer(ch)
    consumer(ch)
}

Бул жерде, producer сандарды каналга жөнөтөт, ал эми consumer аларды окуйт. Каналдар маалыматтарды коопсуз өткөрүүнү камсыздайт, mutexтер же башка синхрондоштуруу механизмдерин колдонбостон.