Avertissement Errcheck sur le report de fonctions avec des variables de retour
Lors du report d'une fonction qui renvoie une variable dans Go, des linters comme gometalinter et errcheck peuvent émettre avertissements. En effet, les fonctions différées n'ont pas de valeurs de retour accessibles, ce qui entraîne des erreurs potentielles non gérées.
Pour résoudre ce problème, l'approche recommandée consiste à envelopper la fonction différée dans une autre fonction anonyme ou nommée qui capture la variable d'erreur.
Voici un exemple utilisant une fonction anonyme :
<code class="go">defer func() { if err := r.Body.Close(); err != nil { // Handle the error } }()</code>
Cette approche permet au code de gestion des erreurs d'être exécuté immédiatement après la fonction différée, garantissant ainsi qu'aucune erreur potentielle n'est rejetée.
Alternativement, une fonction d'assistance peut être créée pour effectuer la vérification des erreurs et être différée à la place :
<code class="go">func Check(f func() error) { if err := f(); err != nil { // Handle the error } } defer Check(r.Body.Close)</code>
Cette fonction d'assistance peut être réutilisée pour plusieurs fonctions différées, simplifiant ainsi le processus de gestion des erreurs.
Par exemple, une fonction d'assistance modifiée peut accepter plusieurs fonctions et les exécuter dans l'ordre inverse :
<code class="go">func Checks(fs ...func() error) { for i := len(fs) - 1; i >= 0; i-- { if err := fs[i](); err != nil { // Handle the error } } } defer Checks(r.Body.Close, SomeOtherFunc)</code>
Cela garantit que la dernière fonction différée est exécutée en premier, imitant l'ordre d'exécution des fonctions différées dans Go .
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!