Sobes.tech
Junior — Middle

İş parçaları veya goroutine'ler arasında veri alışverişi için kanalların ne zaman ve nasıl kullanıldığına dair bir örnek verebilir misin?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go'da kanallar, goroutine'ler arasında güvenli veri alışverişi yapmak, onları senkronize etmek ve değerleri iletmek için kullanılır.

Bir kanalı, bir goroutine'den diğerine sayı iletmek için kullanma örneği:

package main

import (
    "fmt"
    "time"
)

func producer(ch chan int) {
    for i := 0; i < 5; i++ {
        ch <- i // kanala veri gönder
        time.Sleep(time.Millisecond * 500)
    }
    close(ch) // tüm veriler gönderildikten sonra kanalı kapat
}

func consumer(ch chan int) {
    for val := range ch { // kanaldan veri al
        fmt.Println("Alındı:", val)
    }
}

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

Burada, producer sayıları kanala gönderir ve consumer onları okur. Kanallar, mutex veya diğer senkronizasyon mekanizmaları kullanmaya gerek kalmadan güvenli veri iletimini sağlar.