By taking a pointer of the loop variable, subsequent goroutines will get
their subscription data changed because the loop is continuing.
switch s.CollectionType {
case "activities":
wg.Add(1)
switch s.CollectionType {
case "activities":
wg.Add(1)
+ go func(s fitbit.Subscription) {
defer wg.Done()
if err := activitiesNotification(ctx, &s); err != nil {
log.Warningf(ctx, "activitiesNotification() = %v", err)
}
defer wg.Done()
if err := activitiesNotification(ctx, &s); err != nil {
log.Warningf(ctx, "activitiesNotification() = %v", err)
}
+ go func(s fitbit.Subscription) {
defer wg.Done()
if err := sleepNotification(ctx, &s); err != nil {
log.Warningf(ctx, "sleepNotification() = %v", err)
}
defer wg.Done()
if err := sleepNotification(ctx, &s); err != nil {
log.Warningf(ctx, "sleepNotification() = %v", err)
}
default:
log.Warningf(ctx, "ignoring collection type %q", s.CollectionType)
default:
log.Warningf(ctx, "ignoring collection type %q", s.CollectionType)