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}