package daemon type DaemonService interface { Start() Stop() } type Daemon struct { services []DaemonService } func (d *Daemon) RegisterDaemonServer(service DaemonService) { d.services = append(d.services, service) } func (d *Daemon) Start() { for _, service := range d.services { go service.Start() } } func (d *Daemon) Stop() { for _, service := range d.services { service.Stop() } }