Цены у нескольких источников с общим дедлайном

ЗадачаMiddle30 минпроверка — Спринтнапиши код10-t022

Нужно собрать цены для списка объектов у разных источников (feed), уложившись в дедлайн fetchDeadline, и посчитать для каждого объекта список цен и их среднее, например rec-a [42 34 98] 58.0. fetchQuotes отвечает за 0–2 с, summarize считает 1–2 с. Пары «объект — источник» даны в main.

main.gogo
1package main2 3import (4	"context"5	"fmt"6	"time"7)8 9// TODO: собрать все цены по объектам, укладываясь в fetchDeadline10// пример результата:11// rec-a [42, 34, 98] 58.012// rec-b [10, 20], 15.013 14const fetchDeadline = 2 * time.Second15 16type pairing struct {17	Object string18	Feed   string19}20 21func main() {22	pairs := []pairing{23		{Object: "rec-a", Feed: "feed-1"},24		{Object: "rec-b", Feed: "feed-1"},25		{Object: "rec-b", Feed: "feed-2"},26		{Object: "rec-c", Feed: "feed-3"},27	}28	_ = pairs29}30 31type quote struct {32	Object string33	Price  float6434}35 36func fetchQuotes(ctx context.Context, feed string, objects []string) ([]quote, error) {37	// задержка 0-2 секунды38	return []quote{39		{Object: objects[0], Price: 1200},40		{Object: objects[1], Price: 1100},41		{Object: objects[0], Price: 2300},42	}, nil43}44 45func summarize(qs []quote) ([]float64, float64) {46	// расчёт занимает 1-2 секунды47	out := make([]float64, len(qs))48	sum := 0.049	for i := range qs {50		out[i] = qs[i].Price + 10051		sum += out[i]52	}53	return out, sum / float64(len(out))54}
⌘ Enter — проверить