Как работает этот код? Что он выведет? Как ускорить этот код? (речь про Do)
Условие
Заголовок раздела «Условие»Как работает этот код? Что он выведет? Как ускорить этот код? (речь про Do)
func main() { fmt.Println(Do(context.Background(), []User{{"aaa "}, {"bbb "}, {"ccc "}, {"ddd "}, {"eeee "}}))}
type User struct { Name string}
func fetchByName(ctx context.Context, userName string) (int, error) { // Тут происходит сетевой поход, который по userName возвращает UserID time.Sleep(10 * time.Millisecond) // имитация сетевого похода return rand.Int() % 100_000, nil}
func Do(ctx context.Context, users []User) (map[string]int, error) { collected := make(map[string]int) for _, u := range users { userID, err := fetchByName(ctx, u.Name) if err != nil { return collected, err } collected[u.Name] = userID }
return collected, nil}Решение
Заголовок раздела «Решение»Источник: VK / ВК (ВКонтакте) - 3 · 1 кв 2025
← ## Условие · Все задачи · Go · Нужно написать сервис. На вход сервису… →