Sobes.tech
Junior — Middle

Aynı anda çalışan beş goroutine'un sonuçlarını nasıl toplayabilir ve işleyebilirsiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Aynı anda beş goroutine çalıştırıp sonuçlarını toplamak için Go'da kanalları (channels) kullanabilirsiniz. Her goroutine sonucu kanala gönderir ve ana fonksiyon kanaldan gerekli sayıda okuma yapar.

Örnek:

package main

import (
    "fmt"
    "sync"
)

func worker(id int, ch chan<- int, wg *sync.WaitGroup) {
    defer wg.Done()
    // bazı işler
    result := id * 2
    ch <- result
}

func main() {
    ch := make(chan int, 5) // tamponlu kanal
    var wg sync.WaitGroup

    for i := 1; i <= 5; i++ {
        wg.Add(1)
        go worker(i, ch, &wg)
    }

    wg.Wait()
    close(ch)

    for res := range ch {
        fmt.Println("Sonuç:", res)
    }
}

Burada, worker sonuç hesaplayan ve kanala gönderen bir goroutinedir. Ana fonksiyon, WaitGroup ile tüm goroutinelerin tamamlanmasını bekler, sonra kanalı kapatır ve tüm sonuçları okur.