Heim > Backend-Entwicklung > Golang > Verschiedene Verwendungen des Schlüsselworts defer in Golang-Funktionen

Verschiedene Verwendungen des Schlüsselworts defer in Golang-Funktionen

WBOY
Freigeben: 2023-05-17 09:01:53
Original
1326 Leute haben es durchsucht

Golang ist eine sehr beliebte Programmiersprache mit sehr umfangreichen Sprachfunktionen. Eine davon ist die Verwendung des Schlüsselworts defer zum Ausführen einiger spezifischer Funktionen. In diesem Artikel stellen wir verschiedene Möglichkeiten zur Verwendung des Schlüsselworts defer vor.

  1. Verzögern Sie die Ausführung der Funktion

In Golang besteht die am häufigsten verwendete Funktion des Schlüsselworts defer darin, die Ausführung der Funktion zu verzögern. Dies bedeutet, dass nach der Ausführung der Funktion die vom Schlüsselwort defer umschlossene Funktion verzögert wird.

Zum Beispiel können wir das Schlüsselwort defer verwenden, um das Protokoll zu drucken:

func foo() {
    defer log.Printf("Exiting foo()")
    // Do something ...
}
Nach dem Login kopieren

Auf diese Weise wird das Protokoll gedruckt, wenn die Funktion die Ausführung abschließt.

  1. Verzögern Sie die Freigabe von Ressourcen

In Golang kann die Ausführung verzögerter Funktionen auch dazu verwendet werden, bestimmte Ressourcen wie offene Dateien, Netzwerkverbindungen usw. freizugeben.

Zum Beispiel können wir das Schlüsselwort defer verwenden, um eine Datei zu schließen:

func foo() {
    file, err := os.Open("test.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()
    // Do something ...
}
Nach dem Login kopieren

In diesem Beispielcode wird das Dateihandle automatisch geschlossen, wenn die Ausführung der Funktion abgeschlossen ist.

Ähnlich können wir auch das Schlüsselwort defer verwenden, um eine Datenbankverbindung zu schließen:

func foo() {
    db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/test")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()
    // Do something ...
}
Nach dem Login kopieren

In diesem Beispielcode wird die Datenbankverbindung automatisch geschlossen, wenn die Ausführung der Funktion abgeschlossen ist.

  1. Fehlerbehandlung verzögern

In Golang können wir das Schlüsselwort defer verwenden, um die Fehlerbehandlung zu verzögern. Auf diese Weise können wir garantieren, dass die verzögerte Funktion auch dann ausgeführt wird, wenn in der Funktion ein Fehler auftritt.

Zum Beispiel können wir das Schlüsselwort „defer“ verwenden, um einen Fehler beim Lesen einer Datei zu behandeln:

func foo() (err error) {
    file, err := os.Open("test.txt")
    if err != nil {
        return err
    }
    defer func() {
        if closeErr := file.Close(); closeErr != nil {
            err = closeErr
        }
    }()
    // Do something ...
    return err
}
Nach dem Login kopieren

Wenn in diesem Beispielcode die Datei nicht geöffnet werden kann, wird direkt ein Fehler zurückgegeben. Andernfalls verwenden wir das Schlüsselwort „defer“, um den Fehler zu verzögern Öffnen des Aktengriffverschlusses. Gleichzeitig prüfen wir, ob beim Abschlussvorgang in der Defer-Funktion ein Fehler vorliegt. Wenn dies der Fall ist, werden sowohl der Abschlussfehler als auch der ursprüngliche Fehler zurückgegeben.

  1. Verzögerte Wiederherstellung

In Golang können wir das Schlüsselwort defer verwenden, um bestimmte Ausnahmen wiederherzustellen.

Zum Beispiel können wir das Schlüsselwort defer verwenden, um einen fehlerhaften Funktionsaufruf wiederherzustellen:

func foo() (err error) {
    defer func() {
        if exception := recover(); exception != nil {
            err = fmt.Errorf("Caught an exception: %v", exception)
        }
    }()
    // Do something ...
    return err
}
Nach dem Login kopieren

In diesem Beispielcode verpacken wir die Wiederherstellungsfunktion in eine Defer-Funktion. Wenn während der Funktionsausführung eine Ausnahme auftritt, stellen wir die Ausnahme wieder her und drucken die Ausnahmeinformationen aus.

Kurz gesagt ist das Schlüsselwort defer in Golang eine sehr leistungsstarke Funktion, mit der eine Vielzahl von Aufgaben erledigt werden können, darunter verzögerte Funktionsausführung, verzögerte Ressourcenfreigabe, verzögerte Fehlerbehandlung und verzögerte Wiederherstellung. Die Verwendung des Schlüsselworts defer kann unseren Code robuster und klarer machen.

Das obige ist der detaillierte Inhalt vonVerschiedene Verwendungen des Schlüsselworts defer in Golang-Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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