Kurzschlussauswertung in Go
In der Computerprogrammierung ist die Kurzschlussauswertung eine Optimierungstechnik, die die Leistung von bedingten Anweisungen durch Überspringen von verbessert Bewertung nachfolgender Bedingungen, sobald eine Bedingung erfüllt ist. Dieses Verhalten soll unnötige Berechnungen vermeiden, insbesondere wenn eine Bedingung implizit das Ergebnis der anderen impliziert.
Kurzschlussauswertung von Go
Go folgt dem Prinzip des Kurzschlusses Auswertung. Mit anderen Worten: In einer if-Anweisung wertet Go nachfolgende Bedingungen nur dann aus, wenn die vorhergehenden nicht erfüllt sind. Dies gilt sowohl für die if-else-Anweisung als auch für die if-Anweisung ohne else-Klausel.
Leistungsvergleich
Lassen Sie uns die beiden in der Frage bereitgestellten Codeausschnitte analysieren:
if !isValidQueryParams(&queries) || r == nil || len(queries) == 0 { return "", fmt.Errorf("invalid querystring") }
if r == nil || len(queries) == 0 || !isValidQueryParams(&queries) { return "", fmt.Errorf("invalid querystring") }
In beiden Fällen gilt, wenn r == Null oder len(Abfragen) == 0, die Die Funktion isValidQueryParams wird nicht aufgerufen, da der Gesamtausdruck bereits falsch ist. Daher sind die Leistungsoptimierungen in diesem speziellen Kontext möglicherweise nicht wesentlich.
Beispiel
Um die Kurzschlussauswertung in Aktion zu demonstrieren, betrachten Sie den folgenden Code:
package main import "fmt" func main() { for i := 0; i < 10; i++ { if testFunc(1) || testFunc(2) { // do nothing } } } func testFunc(i int) bool { fmt.Printf("function %d called\n", i) return true }
Wenn Sie diesen Code ausführen, wird Folgendes ausgegeben:
function 1 called function 1 called function 1 called function 1 called function 1 called function 1 called function 1 called function 1 called function 1 called function 1 called
Wie Sie sehen können, die testFunc-Funktion mit Argument 2 wird nie aufgerufen, da die erste Bedingung (testFunc(1)) immer als wahr ausgewertet wird. Dies verdeutlicht, wie die Kurzschlussauswertung unnötige Funktionsaufrufe verhindert.
Das obige ist der detaillierte Inhalt vonWie funktioniert die Kurzschlussbewertung in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!