Maison > développement back-end > Golang > le corps du texte

Comment utiliser les fonctions différées dans Go ?

PHPz
Libérer: 2023-05-11 16:39:12
original
924 Les gens l'ont consulté

En langage Go, la fonction de report est une fonctionnalité très utile. Il vous permet d'exécuter du code avant le retour de la fonction, que la fonction retourne normalement ou qu'une exception se produise.

Utilisez l'instruction defer pour différer les appels de fonction jusqu'au retour de la fonction actuelle. Voici quelques exemples pour vous aider à mieux comprendre comment utiliser les fonctions de retard.

La première façon d'utiliser la fonction de retard peut être à l'intérieur d'une fonction pour libérer certaines ressources avant le retour de la fonction. Lorsque plusieurs ressources doivent être libérées, vous pouvez utiliser plusieurs instructions defer pour vous assurer qu'elles sont dans le bon ordre.

Voici un exemple simple montrant comment utiliser l'instruction defer dans une fonction pour libérer deux ressources différentes :

package main

import "fmt"

func main() {
    file1 := openFile("file1.txt")
    defer closeFile(file1)

    file2 := openFile("file2.txt")
    defer closeFile(file2)

    // Do some work...
}

func openFile(filename string) *File {
    fmt.Printf("Opening file %s
", filename)
    return nil // Return a dummy file
}

func closeFile(file *File) {
    fmt.Printf("Closing file
")
}
Copier après la connexion

Dans cet exemple, nous définissons une fonction openFile qui ouvre un fichier et renvoie un handle vers l'objet fichier. Nous définissons également une fonction closeFile pour fermer le fichier.

Dans la fonction principale, nous utilisons l'instruction defer pour garantir que les deux objets fichier : file1 et file2 sont fermés avant le retour de la fonction. Si nous utilisons une instruction return à cet emplacement dans la fonction principale pour quitter la fonction plus tôt, les deux fichiers seront fermés avant de quitter.

La deuxième façon d'utiliser les fonctions de délai consiste à gérer les exceptions. Lorsqu'une fonction rencontre une erreur et doit se fermer immédiatement, l'utilisation d'une instruction defer pour libérer des ressources et effectuer un nettoyage peut vous aider à garder la structure de votre code claire et simple.

Voici un exemple qui montre comment utiliser l'instruction defer pour nettoyer l'état actuel lorsqu'une fonction gère une exception :

package main

import (
    "fmt"
    "os"
)

func main() {
    file, err := os.Open("file.txt")
    if err != nil {
        fmt.Println("Failed to open file")
        return
    }

    defer file.Close()

    // Do some work...
}
Copier après la connexion

Dans cet exemple, nous essayons d'ouvrir un fichier nommé "file.txt". Si l'ouverture du fichier échoue, nous imprimons un message d'erreur et revenons de la fonction.

Si le fichier est ouvert avec succès, nous utilisons l'instruction defer pour garantir que le fichier est fermé avant le retour de la fonction. Non seulement cela évite les fuites de mémoire, mais cela garantit également que notre code reste clair et maintenable.

En bref, l'instruction defer est une fonctionnalité très utile, son utilisation en langage Go peut vous aider à garder votre code propre et lisible. Si vous utilisez le langage de programmation Go, il est recommandé d'apprendre à utiliser l'instruction defer dans les fonctions et de l'utiliser correctement, le cas échéant.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!