Dizeye dayalı bir işlev belirtmek istiyorum. Bir haritadan ipler alıyorum, aşağıdaki örnekte bunlar, haritayı birleştirirken function
'daki değerlerdir. Örneğin, function
== "networkInfo" dize değeri olduğunda, bu değeri gerçek fonksiyonların adı olarak "tedavi etmek" istiyorum. Açıklamak zor ama sanırım siz ne demek istediğimi anlayacaksınız.Dize değerini işlev çağrısına dönüştürme
Amacım, anahtar deyimini kaldırmak ve ağ iletişiminin function
dizesinden ayıklanan işlev adı olduğu c.AddFunc(spec, func() { networkInfo() })
numaralı telefonu aramaktır. Bunun mümkün olduğunu biliyorum, ama ben :(Yardım takdir bilmiyorum
// ScheduleCronjobs starts the scheduler
func ScheduleCronjobs() {
tasks := props.P.GetStringMapString("tasks")
log.Infof("number of tasks: %d", len(tasks))
if len(tasks) != 0 {
c := cron.New()
// for each task, initialize
for function, spec := range tasks {
switch function {
case "networkInfo":
c.AddFunc(spec, func() { networkInfo() })
case "bla":
c.AddFunc(spec, func() { bla() })
default:
log.Errorf("unknown task: %q", function)
}
}
c.Start()
}
// after initialization, send out confirmation message
slack.SendMessage("tasks initialized", props.P.GetString("channel"))
}
Tüm funcs'lerin aynı imzanın var olduğunu mu sanırım? Yani func() –
Ayrıca, tüm funcs aynı pakette yaşıyor mu? –
Evet, tüm işlevler (tüm "görevler") aynı imzana sahip. Ve tüm işlevler aynı pakette yaşıyor. –