Junior — Middle
Wie komfortabel ist es für Sie, mit der Funktion async.Map für asynchrone Operationen zu arbeiten?
sobes.tech KI
Antwort von AI
Die Standardbibliothek von Go verfügt nicht über eine Funktion async.Map, aber es gibt ähnliche Ansätze für parallele Verarbeitung mit Goroutines und Kanälen. Normalerweise verwendet man Goroutines und sync.WaitGroup, um Operationen parallel auszuführen und auf deren Abschluss zu warten.
Beispiel für eine asynchrone Map-Implementierung:
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
}
// Verwendung
inputs := []int{1, 2, 3, 4}
outputs := asyncMap(inputs, func(x int) int { return x * 2 })
fmt.Println(outputs) // [2 4 6 8]
Dieser Ansatz ermöglicht eine effiziente Parallelisierung von Operationen, erfordert jedoch eine sorgfältige Verwaltung der Synchronisation und Fehlerbehandlung.