func main() {
var wg sync.WaitGroup
wg.Add(2)
s := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
even := make(chan int)
odd := make(chan int)
var res1, res2 int
go add(&wg, even, &res1)
go add(&wg, odd, &res2)
for _, a := range s {
if a%2 == 0 {
even <- a
} else {
odd <- a
}
}
// 标识结束
even <- -1
odd <- -1
wg.Wait()
}
func add(wg *sync.WaitGroup, ch chan int, res *int) {
defer wg.Done()
for {
cur := <-ch
if cur < 0 {
fmt.Println(*res)
close(ch)
return
}
*res += cur
}
}
golang代码题,两个协程分别打印数组中所有偶数的和/奇数的和
最新推荐文章于 2024-09-15 15:49:02 发布