Junior — Middle
Cik ērti jums ir strādāt ar async.Map funkciju asinhronām operācijām?
sobes.tech AI
Atbilde no AI
Standarta bibliotēkā Go nav funkcijas async.Map, bet ir līdzīgi pieejas paralēlai apstrādei, izmantojot goroutines un kanālus. Parasti, asinhroni piemērojot funkciju masīvam, tiek izmantotas goroutines un sync.WaitGroup, lai paralēli palaistu operācijas un gaidītu to pabeigšanu.
Asinhronas Map piemērs:
func asyncMap(inputs []int, fn func(int) int) []int {
var wg sync.WaitGroup
results := make([]int, len(inputs))
for i, v := range inputs {
wg.Add(1)
go func(i, v int) {
defer wg.Done()
results[i] = fn(v)
}(i, v)
}
wg.Wait()
return results
}
// Lietošana
inputs := []int{1, 2, 3, 4}
outputs := asyncMap(inputs, func(x int) int { return x * 2 })
fmt.Println(outputs) // [2 4 6 8]
Šī pieeja ļauj efektīvi paralēli veikt operācijas, bet prasa uzmanīgu sinhronizācijas un kļūdu pārvaldības nodrošināšanu.