Junior — Middle
Quão confortável você se sente ao trabalhar com a função async.Map para operações assíncronas?
sobes.tech IA
Resposta da IA
A biblioteca padrão do Go não possui uma função async.Map, mas existem abordagens semelhantes para processamento paralelo usando goroutines e canais. Normalmente, para aplicar uma função de forma assíncrona a um slice, usa-se goroutines e sync.WaitGroup para lançar operações em paralelo e aguardar sua conclusão.
Exemplo de implementação de um Map assíncrono:
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
}
// Uso
inputs := []int{1, 2, 3, 4}
outputs := asyncMap(inputs, func(x int) int { return x * 2 })
fmt.Println(outputs) // [2 4 6 8]
Este método permite paralelizar operações de forma eficiente, mas requer gerenciamento cuidadoso de sincronização e tratamento de erros.