Sobes.tech
Junior — Middle

Dans quelle mesure êtes-vous à l'aise pour travailler avec la fonction async.Map pour les opérations asynchrones?

sobes.tech IA

Réponse de l'IA

La bibliothèque standard de Go ne dispose pas d'une fonction async.Map, mais il existe des approches similaires pour le traitement parallèle à l'aide de goroutines et de canaux. En général, pour appliquer une fonction de manière asynchrone à une tranche, on utilise des goroutines et sync.WaitGroup pour lancer des opérations en parallèle et attendre leur achèvement.

Exemple d'implémentation d'un Map asynchrone :

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
}

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

Cette approche permet de paralléliser efficacement les opérations, mais nécessite une gestion prudente de la synchronisation et de la gestion des erreurs.