code: func (p *Publisher) Publish(v interface{}) {
  	p.m.RLock()
  	if len(p.subscribers) == 0 {
  		p.m.RUnlock()
  		return
  	}
  
  	wg := wgPool.Get().(*sync.WaitGroup)
  	for sub, topic := range p.subscribers {
  		wg.Add(1)
  		go p.sendTopic(sub, topic, v, wg)
  	}
  	wg.Wait()
  	wgPool.Put(wg)
  	p.m.RUnlock()
  }
docs: // Publish sends the data in v to all subscribers currently registered with the publisher.