
[网站模板]企业官网
2025年9月7日
package main
import (
"fmt"
"strconv"
"sync"
)
type Data struct {
ID int
Name string
Age int
}
func syncRun(data []*Data) {
count := len(data)
var wg sync.WaitGroup
// 逐个加入待处理队列
jobChan := make(chan *Data, count)
for _, v := range data {
jobChan <- v
}
//创建10个协程并行处理
workerCount := 10
for i := 0; i < workerCount; i++ {
wg.Add(1)
go worker(jobChan, &wg)
}
close(jobChan)
wg.Wait()
}
func worker(data chan *Data, wg *sync.WaitGroup) {
defer wg.Done()
for v := range data {
// 数据处理代码
go func() {
out := fmt.Sprintf("id=%d,name=%s,age=%d", v.ID, v.Name, v.Age)
fmt.Println(out)
}()
}
fmt.Println("DONE")
}
func main() {
data := make([]*Data, 0)
for i := 0; i < 100; i++ {
data = append(data, &Data{
ID: i,
Name: "Zhangsan_" + strconv.Itoa(i),
Age: 18 + i,
})
}
syncRun(data)
}