Heim > Backend-Entwicklung > Golang > Wie funktioniert die Kurzschlussbewertung in Go?

Wie funktioniert die Kurzschlussbewertung in Go?

DDD
Freigeben: 2024-11-08 05:21:01
Original
1091 Leute haben es durchsucht

How Does Short Circuit Evaluation Work in Go?

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")
}
Nach dem Login kopieren
if r == nil || len(queries) == 0 || !isValidQueryParams(&queries) {
    return "", fmt.Errorf("invalid querystring")
}
Nach dem Login kopieren

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

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
Nach dem Login kopieren

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!

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage