File size: 300 Bytes
ca7217f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package parallel

import (
	"sync"
)

func Parallel[T any, R any](fn func(T) R, args ...T) []R {
	var wg sync.WaitGroup
	results := make([]R, len(args))

	for i, v := range args {
		wg.Add(1)
		go func(i int, v T) {
			defer wg.Done()
			results[i] = fn(v)
		}(i, v)
	}

	wg.Wait()
	return results
}