In der Programmierung ist die Kurzschlussauswertung eine Technik, bei der ein Ausdruck nur dann ausgewertet wird, wenn es notwendig ist, das Ergebnis der umgebenden Anweisung zu bestimmen . Dies wird häufig in bedingten Anweisungen verwendet, bei denen die Auswertung mehrerer Bedingungen unnötig ist, wenn eine frühere Bedingung bereits falsch ist.
Go implementiert eine Kurzschlussauswertung für logische Operatoren (&& und ||), ähnlich wie viele andere Programmierungen Sprachen. Das bedeutet, dass der Interpreter in einer if-Anweisung die Bedingungen von links nach rechts auswertet und stoppt, sobald das Ergebnis bekannt ist.
Bezüglich der bereitgestellten Codebeispiele hat die Auswertungsreihenfolge der Bedingungen keinen Einfluss auf die Leistung des Programms. In Go verhalten sich beide Codefragmente gleich. Der Compiler wertet die Ausdrücke von links nach rechts aus und schließt die Auswertung kurz, sobald er das Ergebnis bestimmt.
Um dies zu demonstrieren, betrachten Sie den folgenden Code:
package main import "fmt" func main() { var r *http.Request queries := make(map[string][]string) if r == nil || len(queries) == 0 || !isValidQueryParams(&queries) { fmt.Println("Invalid querystring") } }
Obwohl isValidQueryParams hat mehr Overhead als r == nil und len(queries) == 0, der Compiler wertet die Ausdrücke der Reihe nach aus und schließt kurz, sobald das Ergebnis klar ist. Daher gibt es keinen Leistungsunterschied zwischen den beiden Codefragmenten in Ihrem Beispiel.
Das obige ist der detaillierte Inhalt vonBeeinflusst die Kurzschlussauswertung von Go die Leistung in bedingten Anweisungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!