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тер же башка синхрондоштуруу механизмдерин колдонбостон.