Kurzschlussauswertung in Go: Reihenfolge boolescher Ausdrücke
In Go ist die Kurzschlussauswertung wie in vielen anderen Programmiersprachen innerhalb von Bedingungen implementiert Ausdrücke. Dies bedeutet, dass verschachtelte boolesche Ausdrücke in einer bestimmten Reihenfolge ausgewertet werden, wodurch die Leistung in bestimmten Fällen optimiert wird.
Beachten Sie den folgenden Code:
if error != nil || someFunc() || otherFunc() { return }
Wenn der Fehler im obigen Ausdruck nicht Null ist, Go kehrt sofort zurück, ohne someFunc() oder otherFunc() aufzurufen. Das liegt daran, dass || ist ein Kurzschlussoperator. Wenn der erste Unterausdruck (Fehler) als wahr ausgewertet wird, gilt das Ergebnis des Gesamtausdrucks als wahr, unabhängig vom Ergebnis der nachfolgenden Unterausdrücke.
In einem anderen Beispiel:
if !isValidQueryParams(&queries) || r == nil || len(queries) == 0 { return }
Da die Kurzschlussauswertung aktiv ist und isValidQueryParams() false zurückgibt, kehrt Go sofort zurück, ohne zu prüfen, ob r Null ist oder ob die Abfrageliste leer ist. Dieser Ansatz trägt dazu bei, unnötige Berechnungen zu reduzieren.
Daher sollten Sie bei der Optimierung der Leistung in solchen Szenarien die potenziellen Kosten jedes Funktionsaufrufs berücksichtigen und sie in einer Reihenfolge anordnen, die eine Kurzschlussauswertung nutzt. Go wertet Ausdrücke von links nach rechts aus, und sobald das Gesamtergebnis (wahr oder falsch) bestimmt ist, werden die restlichen Ausdrücke nicht ausgewertet.
Das obige ist der detaillierte Inhalt vonWie optimiert die Kurzschlussauswertung bedingte Ausdrücke in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!