Sobes.tech
Junior — Middle

Чӣ гуна метавон натиҷаҳои панҷ гурутини ҳамзамон оғозшударо ҷамъоварӣ ва коркард кард?

sobes.tech AI

Ҷавоб аз AI

Барои иҷрои як вақт панҷ goroutine ва ҷамъоварии натиҷаҳои онҳо, шумо метавонед каналҳоро (channels) дар Go истифода баред. Ҳар як goroutine натиҷаро ба канал мефиристад, ва функсияи асосӣ аз канали лозимаро мехонад.

Масалан:

package main

import (
    "fmt"
    "sync"
)

func worker(id int, ch chan<- int, wg *sync.WaitGroup) {
    defer wg.Done()
    // коре баъзе
    result := id * 2
    ch <- result
}

func main() {
    ch := make(chan int, 5) // канал бо буфер
    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("Натиҷа:", res)
    }
}

Ин ҷо, worker як goroutine аст, ки натиҷаро ҳисоб мекунад ва ба канала мефиристад. Функсияи асосӣ бо истифода аз WaitGroup интизор мешавад, ки ҳамаи goroutineҳо ба анҷом расанд, пас каналро мебандад ва ҳамаи натиҷаҳоро мехонад.