Sobes.tech
Junior — Middle

Gor yoki iplar o'rtasida ma'lumot almashish uchun kanallar qachon va qanday ishlatilishini misol bilan keltira olasizmi?

sobes.tech AI

AIdan javob

Go'da kanallar, goroutine'lar arasında güvenli veri alışverişi yapmak, onları senkronize etmek ve değerleri iletmek üçün istifadə olunur.

Bir kanalı, bir goroutine'den digərinə ədədlər göndərmək üçün istifadə nümunəsi:

package main

import (
    "fmt"
    "time"
)

func producer(ch chan int) {
    for i := 0; i < 5; i++ {
        ch <- i // kanala məlumat göndərilir
        time.Sleep(time.Millisecond * 500)
    }
    close(ch) // bütün məlumatlar göndərildikdən sonra kanal bağlanır
}

func consumer(ch chan int) {
    for val := range ch { // kanaldan məlumat alınır
        fmt.Println("Alınmış:", val)
    }
}

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

Burada, producer ədədləri kanala göndərir və consumer onları oxuyur. Kanallar, mutex və ya digər sinxronizasiya mexanizmlərindən istifadə etmədən məlumatların təhlükəsiz ötürülməsini təmin edir.