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ҳо ба анҷом расанд, пас каналро мебандад ва ҳамаи натиҷаҳоро мехонад.