Maison  >  Article  >  développement back-end  >  Comment gérer les erreurs lors du report de fonctions avec des valeurs de retour dans Go ?

Comment gérer les erreurs lors du report de fonctions avec des valeurs de retour dans Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-03 01:18:29789parcourir

How to Handle Errors When Deferring Functions with Return Values in Go?

Gestion des erreurs lors du report de fonctions avec des valeurs de retour

Le linter golang/errcheck avertit lors du report d'une fonction qui renvoie une valeur sans vérifier l'erreur . Pour résoudre ce problème, il faut stocker la valeur de retour, ce qui nécessite de différer une autre fonction qui appelle celle d'origine.

Une approche consiste à utiliser une fonction anonyme, comme illustré ci-dessous :

<code class="go">defer func() {
    if err := r.Body.Close(); err != nil {
        fmt.Println("Error when closing:", err)
    }
}()</code>

Alternativement, une fonction d'assistance peut être définie :

<code class="go">func Check(f func() error) {
    if err := f(); err != nil {
        fmt.Println("Received error:", err)
    }
}</code>

qui peut être utilisée comme suit :

<code class="go">defer Check(r.Body.Close)</code>

Pour plusieurs appels de fonction différés, une fonction d'assistance modifiée acceptant plusieurs fonctions peut être créée :

<code class="go">func Checks(fs ...func() error) {
    for i := len(fs) - 1; i >= 0; i-- {
        if err := fs[i](); err != nil {
            fmt.Println("Received error:", err)
        }
    }
}</code>

De plus, la fonction Checks() utilise une boucle descendante pour refléter l'ordre d'exécution premier entré, dernier sorti des fonctions différées.

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!

Déclaration:
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