func main() { env := src.Env{} env.Data = make(map[string]interface{}) env.Etcd = flag.String("etcd", "http://*****:*****@ %s", *env.EtcdDir) go etcdClient.Watch(*env.EtcdDir, 0, true, receiverChannel, stopChannel) // signals osSignal := make(chan os.Signal) signal.Notify(osSignal, os.Interrupt) go func() { for _ = range osSignal { log.Print("Interrupt received, finishing") stopChannel <- true } }() loop(receiverChannel, env) }