Comparaison des messages d'erreur dans Go
Dans Go, les erreurs sont simplement des valeurs qui implémentent l'interface d'erreur. Cela signifie que les erreurs peuvent être comparées à l'aide des opérateurs d'égalité standard (== et !=). Cependant, il n'est généralement pas recommandé de comparer les erreurs par leur représentation sous forme de chaîne renvoyée par la méthode Error(). En effet, la représentation sous forme de chaîne peut changer avec le temps, ce qui peut rendre votre code fragile.
Un moyen plus fiable de comparer les erreurs consiste à utiliser une variable au niveau du package qui stocke l'erreur attendue. Cette variable peut être utilisée pour comparer l'erreur renvoyée par une fonction. Par exemple :
package mypkg import ( "errors" ) // ErrExample is an example error. var ErrExample = errors.New("this is an example") // DoSomething returns an error if something goes wrong. func DoSomething() error { // ... // If something goes wrong, return the error. return ErrExample }
Pour comparer l'erreur renvoyée par DoSomething(), vous pouvez utiliser le code suivant :
if err := DoSomething(); err != nil { // Handle the error. }
Si l'erreur renvoyée par DoSomething() est égale à ErrExample, alors l'instruction if sera exécutée.
Vous pouvez également exporter la variable au niveau du package si le code en dehors du package doit accéder à l'erreur. Par exemple :
package mypkg import ( "errors" ) // ErrExample is an example error. var ErrExample = errors.New("this is an example") // Export the error. var ErrExample = ErrExample
Pour utiliser l'erreur exportée, vous pouvez utiliser le code suivant :
if err := somepackage.DoSomething(); err != nil { // Handle the error. }
Si l'erreur renvoyée par somepackage.DoSomething() est égale à mypkg.ErrExample , alors l'instruction if sera exécutée.
En utilisant une variable au niveau du package pour comparer les erreurs, vous pouvez rendre votre code plus fiable et moins cassant.
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!