> then you could just use sync.Map <
https://golang.org/pkg/sync/#Map>.
I considered sync.Map but since I have two maps I thought struct-level
locking might make more sense.
Thank you for the pointers and the excellent video (actually by Bryan C.
Mills, it seems).
errgroup.WithContext looks seriously helpful. While I was aware of the
ability of a channel to act as a semphore the concepts of sharing
through channels comes across very well, particularly sharing resources
and data, concepts which open up a lot of possibilities.
The video is eye-opening but will take a while to digest.
Thanks again
Rory