Как лучше собирать данные из нескольких потоков, для последующей отправки клиенту?
Зачем ва Go, если вы не поняли его основную парадигму "share by communication"?
Вам тут, из того, что я понял, определённо нужны каналы. Потому что много потоков + одна структура + заполнение по таймеру навевает мысли что творится полный пихжну.
Опишите задачу получше.
Из того, что я понял это банальный https://gobyexample.com/worker-pools