Heim > Artikel > Backend-Entwicklung > Wie behebt man Abschlussprobleme beim Planen von Jobs in einer For-Schleife?
Beheben von Abschlussproblemen in For-Schleifen: Variable kann keiner anonymen Funktion zugewiesen werden
Im Zusammenhang mit der Erstellung eines Aufgabenplans ist ein Problem aufgetreten Dabei wurde bei geplanten Jobs die Beschreibung des zuletzt iterierten Jobs anstelle ihrer eigenen gedruckt. Dieses Problem ist auf die Verwendung anonymer Funktionen innerhalb einer for-Schleife zurückzuführen.
Die Herausforderung ergibt sich aus der Tatsache, dass alle Abschlüsse in Ihrer Schleife dieselbe Variable (in Ihrem Fall die Jobvariable) gemeinsam genutzt haben. Während Sie die Schleife durchlaufen haben, wurde die Variable mit den Daten des nächsten Jobs überschrieben.
Um dieses Problem zu beheben, haben Sie versucht, die Jobvariable als Argument an die anonyme Funktion zu übergeben, haben aber eine Fehlermeldung erhalten Funktionen mit Parametern haben einen anderen Typ als solche ohne Parameter.
Die empfohlene Lösung besteht darin, für jede Iteration der Schleife eine neue Variable (in Ihrem Fall realJob) zu erstellen, um einen eindeutigen Verweis auf jeden Job beizubehalten. Dadurch vermeiden Sie das Abschlussproblem und stellen sicher, dass jeder geplante Job seine eigene korrekte Beschreibung druckt.
Hier ist der überarbeitete Code:
for _, job := range config.Jobs { realJob := job // a new variable each time through the loop c.AddFunc("@every "+realJob.Interval, func() { DistributeJob(realJob) }) log.Println("Job " + realJob.Name + " has been scheduled!") }
Das obige ist der detaillierte Inhalt vonWie behebt man Abschlussprobleme beim Planen von Jobs in einer For-Schleife?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!