gometalinter / errcheck et fonctions différées avec variables renvoyées
les outils gometalinter et errcheck déclenchent un avertissement lorsqu'une fonction qui renvoie une variable est différée. Cela se produit parce que les valeurs de retour des fonctions différées sont ignorées, de sorte que la variable d'erreur renvoyée n'est pas vérifiée.
L'approche recommandée consiste à différer une autre fonction qui appelle la fonction d'origine et gère sa valeur de retour. Cela peut être fait à l'aide d'une fonction anonyme comme suit :
<code class="go">defer func() { if err := r.Body.Close(); err != nil { fmt.Println("Error when closing:", err) } }()</code>
Vous pouvez également créer une fonction d'assistance pour gérer la vérification des erreurs :
<code class="go">func Check(f func() error) { if err := f(); err != nil { fmt.Println("Received error:", err) } }</code>
Utilisation :
<code class="go">defer Check(r.Body.Close)</code>
Pour plusieurs fonctions différées, envisagez une fonction d'assistance qui prend plusieurs fonctions :
<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>
Utilisation :
<code class="go">defer Checks(r.Body.Close, SomeOtherFunc)</code>
Notez que la boucle descendante dans Checks() imite l'ordre d'exécution de fonctions différées (dernier entré, premier sorti).
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!