Heim > Backend-Entwicklung > Golang > Wie vermeidet man Probleme bei der Abschlusszuweisung beim Planen von Jobs in einer For-Schleife?

Wie vermeidet man Probleme bei der Abschlusszuweisung beim Planen von Jobs in einer For-Schleife?

Linda Hamilton
Freigeben: 2024-11-17 18:09:01
Original
597 Leute haben es durchsucht

How to Avoid Closure Assignment Problems When Scheduling Jobs in a For Loop?

Behebung von Abschlusszuweisungsproblemen in „Variable kann in for-Schleife keiner anonymen Funktion zugewiesen werden“

Im Zusammenhang mit der Erstellung eines Aufgabenplaners wird die Die Unfähigkeit, Variablen innerhalb einer for-Schleife anonymen Funktionen zuzuweisen, kann zu unbeabsichtigtem Verhalten führen. Dieses Problem tritt auf, wenn die anonymen Funktionen außerhalb ihres Gültigkeitsbereichs definierte Variablen erfassen, was zu unerwarteten oder falschen Ergebnissen führt.

In dem genannten spezifischen Szenario wird ein Scheduler basierend auf einer Konfigurationsdatei erstellt, die Jobnamen und Intervalle enthält. Jeder Job wird mithilfe der „cron“-Bibliothek geplant, was die Angabe eines Cron-Ausdrucks und einer auszuführenden Funktion erfordert. Der Code iteriert jedoch fälschlicherweise über die Jobs und weist jedem Scheduler dieselbe anonyme Funktion zu, was dazu führt, dass falsche Jobbeschreibungen gedruckt werden.

Um dieses Problem zu beheben, müssen wir sicherstellen, dass jede anonyme Funktion ihre beabsichtigte Variable erfasst. Dies kann erreicht werden, indem für jede Iteration der Schleife eine neue Variable erstellt wird, wie unten gezeigt:

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!")
}
Nach dem Login kopieren

Durch die Verwendung einer neuen Variable für jede Iteration stellen wir sicher, dass jede anonyme Funktion das richtige Jobobjekt erfasst. Behebung des Problems, dass alle auf dieselbe Variable verwiesen und unerwartete Ergebnisse verursachten. Dieser Ansatz liefert genaue Stellenbeschreibungen und stellt das beabsichtigte Verhalten des Planers sicher.

Das obige ist der detaillierte Inhalt vonWie vermeidet man Probleme bei der Abschlusszuweisung beim Planen von Jobs in einer For-Schleife?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage