Sobes.tech
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.