Sobes.tech
Junior — Middle

Hoe comfortabel vind je het om met de functie async.Map te werken voor asynchrone operaties?

sobes.tech AI

Antwoord van AI

De standaardbibliotheek van Go bevat geen functie async.Map, maar er zijn vergelijkbare benaderingen voor parallelle verwerking met behulp van goroutines en kanalen. Gewoonlijk wordt een goroutine en sync.WaitGroup gebruikt om functies asynchroon op een slice toe te passen, zodat de operaties parallel worden uitgevoerd en gewacht wordt tot ze klaar zijn.

Voorbeeld van een implementatie van een asynchrone Map:

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
}

// Gebruik
inputs := []int{1, 2, 3, 4}
outputs := asyncMap(inputs, func(x int) int { return x * 2 })
fmt.Println(outputs) // [2 4 6 8]

Deze aanpak maakt het mogelijk om operaties efficiënt te paralleliseren, maar vereist zorgvuldige synchronisatie en foutafhandeling.